如何从Swift中的XML解析链接“href”标签?

时间:2016-10-04 01:30:06

标签: xml swift parsing

我正在使用Swift 3.0中的一个应用程序来解析XML文件并通过标签显示一些属性。除了当我尝试解析包含a的XML部分时,大部分工作正常 <link href = "..."/>标记。当我尝试这样做时,应用程序崩溃,我收到“致命错误:索引超出范围”消息。 这是我正在使用的XML:https://alerts.weather.gov/cap/fl.php?x=0 这是我的代码:

func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {
    if(elementName == "cap:event") {
        titleFound = true
    }
    if(elementName == "cap:expires") {
        descFound = true
    }
    if(elementName == "cap:severity") {
        sevFound = true
    }
    if(elementName == "summary") {
        summFound = true
    }
    if(elementName == "cap:effective") {
        effFound = true
    }
    if(elementName == "cap:urgency") {
        urgFound = true
    }
    if(elementName == "cap:certainty") {
        certFound = true
    }
    if(elementName == "link") {
        linkFound = true
    }
}

func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
    if(elementName == "cap:event") {
        titleFound = false
    }
    if(elementName == "cap:expires") {
        descFound = false
    }
    if(elementName == "cap:severity") {
        sevFound = false
    }
    if(elementName == "summary") {
        summFound = false
    }
    if(elementName == "cap:effective") {
        effFound = false
    }
    if(elementName == "cap:urgency") {
        urgFound = false
    }
    if(elementName == "cap:certainty") {
        certFound = false
    }
    if(elementName == "link") {
        linkFound = false
    }
}

我想要的元素是<entry>标记内的链接href标记。我不确定如何正确解析这个部分,因为它的格式不像其他标签(<cap:event><cap:severity>等。)任何人都可以对此有所了解吗?

2 个答案:

答案 0 :(得分:0)

这是一个解决方法,但检查xml doc,id标记也包含url。

我遇到了同样的问题。 Chirp Chirp!

答案 1 :(得分:0)

didStartElement方法中,您可以通过参数attributeDict访问该属性,该参数应返回["href":"www.whatever.com"]

找到答案here

这是针对Tanksale的CS320 Midterm吗?祝你好运!