11.Swift XML解析
XML数据解析
在IOS中,提供了一套解析XML数据的API。其实也很简单,就是NSXMLParser和NSXMLParserDelegate。
可以直接指定到XML的URL去实例化NSXMLParser
public convenience init?(contentsOfURL url: NSURL)
解析文件,返回的是一次解析的结果
NSXMLParser.parse() -> Bool
监听解析节点的属性
NSXMLParserDelegate.parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String])
监听解析节点的内容
NSXMLParserDelegate.parser(parser: NSXMLParser, foundCharacters string: String)
待解析的XML文件:
<data>
<code value="1.0">
<version>1.0.1</version>
</code>
<response>
<info>Save you from anything</info>
</response>
</data>
ViewController.swift
class ViewController: UIViewController,NSXMLParserDelegate {
var currentNodeName:String!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// 实例化NSXMLParser
let parse:NSXMLParser = NSXMLParser(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("data", ofType: "xml")!))!
parse.delegate = self
// 开始解析
parse.parse()
}
// 监听解析节点的属性
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]){
// 保存当前的解析到的节点名称
self.currentNodeName = elementName
if(elementName == "code"){
// 获取code节点下 value属性的内容
if