gpt4 book ai didi

swift - xml 解析已完成,但值未快速添加到数组中

转载 作者:行者123 更新时间:2023-11-28 07:14:37 25 4
gpt4 key购买 nike

    <?xml version="1.0"?>
<account>
<username>dedehakan</username>
<avatar>http://www.somewebsite.com/empty.png</avatar>
<email>test@gmail.com</email>
<points>450</points>
<type>premium</type>
<expiration>666666</expiration>
<expiration-txt>17/12/2014 20:37:35</expiration-txt>
<premium-left>-614239</premium-left>
</account>

我想用 nsxmlparser 解析它。我正确地完成了解析,但没有得到任何值。这是我的尝试:

var mydata:NSData = resp.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!
var xmlParser = NSXMLParser(data: mydata)
xmlParser.delegate = self
xmlParser.parse()

resp为字符串,resp的值为xml文本。

func parser(parser: NSXMLParser!, didStartElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: NSDictionary!) {
println(elementName)
println(attributeDict)
}

输出是:

account
nil
username
nil
avatar
nil
email
nil
....

问题是我如何获取 xml 字符串中的值?

最佳答案

问题是您的 XML 文档中的数据不是来自属性;它来自标签本身的文本内容。这就是为什么在打印 attributeDict 时会得到所有这些 nil 的原因。

要解决这个问题,您需要做以下四件事:

  • 将实例变量 lastTag:String?tagContent:String? 添加到您的解析器委托(delegate)类
  • didStartElement函数中将lastTag设置为elementName
  • 提供 foundCharacters 函数的实现,该函数 字符添加到 tagContent 字符串
  • 提供 didEndElement 函数的实现,它以您需要的任何方式使用标签和内容,然后将它们都设置为 nil

长话短说,您需要等到标记的内容可用,直到到达结束标记,此时您可以从实例变量中“收获”内容。

关于swift - xml 解析已完成,但值未快速添加到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26849120/

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