加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用SWXMLHash for Swift迭代XML文件

发布时间:2020-12-14 04:36:42 所属栏目:百科 来源:网络整理
导读:这是我的代码块, 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: NSUTF8StringEncodin
这是我的代码块,

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()

我试图让一个迭代器通过并打印出这些内部的所有子项和属性并将它们存储在变量中.

我一直在寻找一些帮助,但Swift和XML只是一个令人头痛的问题 – 任何帮助让我迭代通过节点会很惊人,我尝试使用while循环,但它只是在给我节点后崩溃了程序.

我试图在循环中使用它,但即使这样也行不通,

while entity.element?.attributes["ID"] != nil {
    entity = xml["row"]["ftc"]["Entity"][a]
    //println(a)

    println(entity.element?.attributes["ID"])
    a++
    break
}

帮助将不胜感激.

解决方法

几个月后我才意识到这个答案,但是当你发布这个问题时,你可能已经使用了旧版本的SWXMLHash.我 added a new method到SWXMLHash称为子,它允许您枚举子元素.鉴于此,您可以使用递归来迭代所有元素.

以下是可能有用的代码段:

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)

您也可以通过这种方式从每个元素中获取属性.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读