千家信息网

如何使用NSXMLParser 对象对xml文件进行解析

发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,这篇文章主要为大家展示了"如何使用NSXMLParser 对象对xml文件进行解析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用NSXMLPars
千家信息网最后更新 2024年11月29日如何使用NSXMLParser 对象对xml文件进行解析

这篇文章主要为大家展示了"如何使用NSXMLParser 对象对xml文件进行解析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用NSXMLParser 对象对xml文件进行解析"这篇文章吧。


打开 Xcode 并且新建一个单视窗应用。名字就叫 IOS9XMLParserTutorial,组织名字和组织标识自己定。语言选 Swift,设备只选 iPhone。

把 View Controller 从 Storyboard 中移除,并拖一个 Navigation Controller 到空的画板里。这个 Navigation Controller 会自动携带一个 Table View Controller。当你把初始的 View Controller 删除时相应的故事板起点也被移除了。所以我们先选中新添加的 Navigation Controller 在 Attribute Inspector 的 "Is Initial View Controller" 复选框打上勾作为新的故事板起点。

双击 able View Controller 的 Title Bar 将其设置为 "Books"。选择 Table View Cell 然后在 Attributes Inspector 中将它的 Style 属性设为 Subtitle。

Storyboard 长这样

既然我们删除了初始 View Controller ,ViewController.swift 也可以一起删除了。选择 iOS->Source->Cocoa Touch Class 添加一个新的文件,命名为 TableViewController,并且设置它为 UITableViewController 的子类。

前往 Storyboard 中选中 Table View Controller,在 Identity inspector 中将 Custom Class 部分设置为 TableViewController。

选择 iOS->Source->Swift File,添加一个新的文件。命名为 Books.xml

打开 Books.xml 替换成以下代码

            To Kill a Mockingbird        Harper Lee                1984        George Orwell                The Lord of the Rings        J.R.R Tolkien                The Catcher in the Rye        J.D. Salinger                The Great Gatsby        F. Scott Fitzgerald    

选择 iOS->Source->Swift File 添加新的文件作为 xml 文件中不同项的数据模型。我们叫它 Book.swift,并替换成以下代码

import Foundationclass Book {    var bookTitle: String = String()    var bookAuthor: String = String()}

前往 tableViewController.swift 文件,添加以下变量。

var books: [Book] = []var eName: String = String()var bookTitle = String()var bookAuthor = String()

将 viewDidLoad 方法复写为

override func viewDidLoad() {    super.viewDidLoad()            if let path = NSBundle.mainBundle().URLForResource("books", withExtension: "xml") {        if let parser = NSXMLParser(contentsOfURL: path) {            parser.delegate = self            parser.parse()        }    }}

NSXMLParser 对象解析 bundle 中的 books.xml 文件。添加以下 table View 的数据源及委托方法

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {    return 1}override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {    return books.count}    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)            let book = books[indexPath.row]            cell.textLabel?.text = book.bookTitle    cell.detailTextLabel?.text = book.bookAuthor    return cell}

所有书的标题和作者数据会保存在 books 数组中并且由 Table View 呈现。接着,实现 NSXMLParser 的委托方法。

// 1func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {    eName = elementName    if elementName == "book" {        bookTitle = String()        bookAuthor = String()    }}    // 2  func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {    if elementName == "book" {                let book = Book()    book.bookTitle = bookTitle    book.bookAuthor = bookAuthor                books.append(book)    }}    // 3func parser(parser: NSXMLParser, foundCharacters string: String) {    let data = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())            if (!data.isEmpty) {        if eName == "title" {            bookTitle += data        } else if eName == "author" {            bookAuthor += data        }    }}
  1. 该方法在解析对象碰到 "" 的起始标签时出触发

  2. 该方法在解析对象碰到 "" 的结尾标签时出触发

  3. 这里解析过程真正执行。标题和作者标签会被解析并且相应的变量将会初始化。

构建并运行项目。在 TableViewController 中能看到所有书的标题和作者。

以上是"如何使用NSXMLParser 对象对xml文件进行解析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

文件 对象 方法 选择 作者 内容 数据 标签 标题 篇文章 中将 代码 变量 名字 故事 起点 时出 委托 学习 帮助 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 悦家互联网科技 怎么样 网络安全上市公司发展 星际战甲可以开什么服务器 计算机网络技术培训视频 json代替数据库 网络安全知识河北省继续教育 邯郸python软件开发价格表 北京楼控管理软件开发中心 大龄零基础适合学习什么网络技术 计算机三级数据库技术考试 注册网络技术公司需要什么手续 浙江科恩网络技术有限公司 广东医疗卫生网络安全 服务器管理不关机 礼品商城软件开发 华为服务器怎么改管理口地址 软件开发上海薪酬 软件开发怎么进国家单位 苏州腾牛网络技术有限公司 网络技术和应用技术的差别 sql 数据库还原时间点 不属于网络安全法原则 嘉定区网络技术咨询优化 ios网络安全事件 国内承认的网络安全证书 全国网络安全知识竞赛几等奖 柳州网络安全教育中心 db2数据库破解版 吉林有名的网络技术服务口碑推荐 数据库包含的实体集之间的关系
0