使用Swift實現(xiàn)iOS App中解析XML格式數(shù)據(jù)的教程
在IOS中,提供了一套解析XML數(shù)據(jù)的API。其實也很簡單,就是NSXMLParser和NSXMLParserDelegate。
可以直接指定到XML的URL去實例化NSXMLParser
public convenience init?(contentsOfURL url: NSURL)
解析文件,返回的是一次解析的結(jié)果
NSXMLParser.parse() -> Bool
監(jiān)聽解析節(jié)點的屬性
NSXMLParserDelegate.parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String])
監(jiān)聽解析節(jié)點的內(nèi)容
NSXMLParserDelegate.parser(parser: NSXMLParser, foundCharacters string: String)
示例:
這里介紹基本的xml數(shù)據(jù)解析并打印出來.
1.準備xml數(shù)據(jù)
打開記事本,寫下:
<?xml version="1.0" encoding="utf-8" ?>
<students>
<student id="001">
<name>Bill Gates</name>
<age>15</age>
</student>
<student id="002">
<name>Tim Cook</name>
<age>18</age>
</student>
</students>
保存命名為data.xml.
2.解析xml
在Xcode中新建一個項目,把data.xml導入新建的工程中,直接拖進去好了.在ViewController.swift里寫下如下代碼:
class ViewController: UIViewController,NSXMLParserDelegate{
override func viewDidLoad() {
super.viewDidLoad()
let parser = NSXMLParser(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("data", ofType: "xml")!))
//1
parser!.delegate = self
parser!.parse()
}
var currentNodeName:String!
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
currentNodeName = elementName
if elementName == "student"{
if let id = attributeDict["id"]{
print("id:\(id)")
}
}
}
func parser(parser: NSXMLParser, foundCharacters string: String) {
//2
let str = string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
if str != "" {
print("\(currentNodeName):\(str)")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
代碼注釋:
1.使用NSXMLParser需要NSXMLParserDelegate代理
2.去除打印如<student>的標簽,如果直接寫成
func parser(parser: NSXMLParser, foundCharacters string: String) {
print("\(string):\(str)")
}
將會把前面的標簽打印出來.
3.代碼運行結(jié)果
id:001 name:Bill Gates age:15 id:002 name:Tim Cook age:18
相關文章
SwiftUI使用Paths和AnimatableData實現(xiàn)酷炫的顏色切換動畫
這篇文章主要介紹了SwiftUI使用Paths和AnimatableData實現(xiàn)酷炫的顏色切換動畫,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2020-05-05
Swift實現(xiàn)可自定義分頁寬度的UIScrollView
這篇文章主要為大家詳細介紹了Swift實現(xiàn)可自定義分頁寬度的UIScrollView,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
swift3.0 創(chuàng)建sqlite數(shù)據(jù)庫步驟方法
本篇文章主要介紹了swift3.0 創(chuàng)建sqlite數(shù)據(jù)庫步驟方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
Flutter iOS開發(fā)OC混編Swift動態(tài)庫和靜態(tài)庫問題填坑
這篇文章主要為大家介紹了Flutter iOS OC 混編 Swift動態(tài)庫和靜態(tài)庫問題填坑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07
Swift仿選擇電影票的效果并實現(xiàn)無限/自動輪播的方法
這篇文章主要給大家介紹了關于Swift仿選擇電影票的效果并實現(xiàn)無限/自動輪播的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-08-08

