gpt4 book ai didi

xml - 在 Swift 中使用 NSXMLParser 时访问元素的值

转载 作者:搜寻专家 更新时间:2023-10-31 22:03:39 25 4
gpt4 key购买 nike

我正在尝试解析 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()

不幸的是,我在控制台中的输出如下所示: enter image description here

为什么我的 attributeDict 看起来是空的,我怎样才能访问与这些元素关联的值?

最佳答案

使用 NSXMLParser 解析 XML 文件并不像您在这里期望的那么容易。您必须实现 NSXMLParserDelegate 协议(protocol)中的几种方法来捕获事件。您已经为 didStartElement 做了这件事,它给出了(对我来说)预期的结果:元素名称及其属性(上面链接的 XML 文件中没有属性)。

一切正常...到目前为止。

现在您已经捕获了一个元素的开始,您必须注意进一步的处理:

  • 协议(protocol)方法 foundCharacters 在元素的开始和结束之间触发。也许好几次。您必须实现该方法并将找到的字符附加到字符串变量,具体取决于元素的名称。

  • didEndElement 被触发时,您的字符串变量将被元素的内容完全填充

如果 XML 文件具有深层层次结构,事情可能会变得越来越复杂。

很抱歉这个宽泛的答案,但不幸的是没有使用那个 XML 文件并给我一个深度嵌套的字典NSXMLParser 的方法。

关于xml - 在 Swift 中使用 NSXMLParser 时访问元素的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27511576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com