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

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

10多年的弋江网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整弋江建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“弋江网站设计”,“弋江网站推广”以来,每个客户项目都认真落实执行。


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

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

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

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

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

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

Storyboard 长这样

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

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

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

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

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

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

如何使用NSXMLParser 对象对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 Foundation

class 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 的委托方法。

// 1
func 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)
    }
}
    
// 3
func 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文件进行解析

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


网页标题:如何使用NSXMLParser对象对xml文件进行解析
链接分享:http://scyanting.com/article/phdssj.html