新建空文件 创建XML文件 写入代码
例如:
//data.xml
<data>
<person age="20">me</person>
<person age="17">xin</person>
<person>love</person>
<a>
<b>
<c>Data</c>
</b>
</a>
</data>
在viewDidLoad()函数中写入
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//传入一个路径解析,创建一个XML的解析对象
var paser = NSXMLParser(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("data", ofType: "xml")!))
paser!.delegate = self
paser?.parse()
}
在全局定义一个currenNodeName
var currenNodeName:String!
//开始解析时
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [NSObject : AnyObject]) {
currenNodeName = elementName
//elementName 节点名称
// println(elementName)
//解析节点里的属性
if elementName=="person"{
// var age: AnyObject? = attributeDict["age"]
// println("age:\(age!)")//直接输出,如果遇到没有 age 属性的 person 则会出错
if let age: AnyObject = attributeDict["age"]{
println("age:\(age)") //如果有[age]属性的就输出,没有不做处理
}
}
}
输出节点中的值:
//查找到字符时
func parser(parser: NSXMLParser, foundCharacters string: String?) {
// println(string!)
//去掉空格和空行
var str = string?.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
if str != ""{ //字符串不为空则输出
// println(str!)
//节点,值
println("current node:\(currenNodeName),value:\(str!)")
}
}
完整的代码
//viewcontroller.swift
import UIKit
class ViewController: UIViewController,NSXMLParserDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//传入一个路径解析,创建一个XML的解析对象
var paser = NSXMLParser(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("data", ofType: "xml")!))
paser!.delegate = self
paser?.parse()
}
var currenNodeName:String!
//开始解析时
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [NSObject : AnyObject]) {
currenNodeName = elementName
//elementName 节点名称
// println(elementName)
//解析节点里的属性
if currenNodeName=="person"{
// var age: AnyObject? = attributeDict["age"]
// println("age:\(age!)")
if let age: AnyObject = attributeDict["age"]{
println("age:\(age)")
}
}
}
//查找到字符时
func parser(parser: NSXMLParser, foundCharacters string: String?) {
// println(string!)
//去掉空格和空行
var str = string?.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
if str != ""{
// println(str!)
//节点,值
println("current node:\(currenNodeName),value:\(str!)")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}