旗下导航:搜·么
当前位置:网站首页 > XML教程 > 正文

细致引见XML剖析(图文)【XML教程】,

作者:搜教程发布时间:2019-12-01分类:XML教程浏览:31评论:0


导读:本教程运用NSXMLParser对象对xml文件举行剖析。剖析效果由TableView展现。本教程在Xcode7.3.1上基于iOS9.3构建。翻开...
本教程运用 NSXMLParser 对象对 xml 文件举行剖析。剖析效果由 Table View 展现。本教程在 Xcode 7.3.1 上基于 iOS 9.3 构建。
翻开 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 替换成以下代码

<?xml version="1.0"?>
<catalog>
    <book id="1">
        <title>To Kill a Mockingbird</title>
        <author>Harper Lee</author>
    </book>
    <book id="2">
        <title>1984</title>
        <author>George Orwell</author>
    </book>
    <book id="3">
        <title>The Lord of the Rings</title>
        <author>J.R.R Tolkien</author>
    </book>
    <book id="4">
        <title>The Catcher in the Rye</title>
        <author>J.D. Salinger</author>
    </book>
    <book id="5">
        <title>The Great Gatsby</title>
        <author>F. Scott Fitzgerald</author>
    </book>
</catalog>

挑选 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. 该要领在剖析对象遇到 "<book>" 的肇端标签时出触发

  2. 该要领在剖析对象遇到 "<book>" 的末端标签时出触发

  3. 这里剖析历程真正实行。题目和作者标签会被剖析而且响应的变量将会初始化。

构建并运转项目。在 TableViewController 中能看到一切书的题目和作者。

以上就是细致引见XML剖析(图文)的细致内容,更多请关注ki4网别的相干文章!


欢迎 发表评论: