我正在尝试解析 http://apps.wku.edu/iwku/maps/buildings/data/SouthCampus-Buildings.xml 上的 XML
在 Swift Playground 中使用以下代码
import UIKit
var str = "Hello, playground"
class Parse: NSObject, NSXMLParserDelegate{
func beginParse(){
let url = NSURL(string: "http://apps.wku.edu/iwku/maps/buildings/data/SouthCampus-Buildings.xml")
var xml = NSXMLParser(contentsOfURL: url)
xml?.delegate = self
xml?.parse()
}
func parser(parser: NSXMLParser!, didStartElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: NSDictionary!) {
println("Element's name is \(elementName)")
println("Element's attributes are \(attributeDict)")
}
}
var instance = Parse()
instance.beginParse()
不幸的是,我在控制台中的输出如下所示:
为什么我的 attributeDict 看起来是空的,我怎样才能访问与这些元素关联的值?
最佳答案
使用 NSXMLParser
解析 XML 文件并不像您在这里期望的那么容易。您必须实现 NSXMLParserDelegate
协议(protocol)中的几种方法来捕获事件。您已经为 didStartElement
做了这件事,它给出了(对我来说)预期的结果:元素名称及其属性(上面链接的 XML 文件中没有属性)。
一切正常...到目前为止。
现在您已经捕获了一个元素的开始,您必须注意进一步的处理:
协议(protocol)方法
foundCharacters
在元素的开始和结束之间触发。也许好几次。您必须实现该方法并将找到的字符附加到字符串变量,具体取决于元素的名称。当
didEndElement
被触发时,您的字符串变量将被元素的内容完全填充
如果 XML 文件具有深层层次结构,事情可能会变得越来越复杂。
很抱歉这个宽泛的答案,但不幸的是没有使用那个 XML 文件并给我一个深度嵌套的字典NSXMLParser
的方法。
关于xml - 在 Swift 中使用 NSXMLParser 时访问元素的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27511576/