Zin*_*ene 4 xml iteration swift swxmlhash
这是我的代码块,
var a = 0;
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
println("error=\(error)")
return
}
responseString = NSString(data: data, encoding: NSUTF8StringEncoding)!
let xmlWithNamespace = responseString
var xml = SWXMLHash.parse(xmlWithNamespace)
var entity = xml["row"]["ftc"]["Entity"][a]
if entity.element?.attributes["ID"] != nil {
entity = xml["row"]["ftc"]["Entity"][a]
//println(a)
println(entity.element?.attributes["ID"])
a++
} else {
println("Print We Have Reached Our Limit")
}
}
task.resume()
Run Code Online (Sandbox Code Playgroud)
我试图让一个迭代器通过并打印出这些内部的所有子项和属性并将它们存储在变量中.
我一直在寻找一些帮助,但Swift和XML只是一个令人头痛的问题 - 任何帮助让我迭代通过节点会很惊人,我尝试使用while循环,但它只是在给我节点后崩溃了程序.
我试图在循环中使用它,但即使这样也行不通,
while entity.element?.attributes["ID"] != nil {
entity = xml["row"]["ftc"]["Entity"][a]
//println(a)
println(entity.element?.attributes["ID"])
a++
break
}
Run Code Online (Sandbox Code Playgroud)
帮助将不胜感激.
几个月后我才意识到这个答案,但是当你发布这个问题时,你可能已经使用了旧版本的SWXMLHash.我在SWXMLHash中添加了一个新方法,children它允许您枚举子元素.鉴于此,您可以使用递归来迭代所有元素.
以下是可能有用的代码段:
let xml = SWXMLHash.parse(xmlWithNamespace)
func enumerate(indexer: XMLIndexer, level: Int) {
for child in indexer.children {
var name = child.element!.name
println("\(level) \(name)")
enumerate(child, level + 1)
}
}
enumerate(xml, 0)
Run Code Online (Sandbox Code Playgroud)
您也可以通过这种方式从每个元素中获取属性.
| 归档时间: |
|
| 查看次数: |
2655 次 |
| 最近记录: |