我正在使用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>
等。)任何人都可以对此有所了解吗?
答案 0 :(得分:0)
这是一个解决方法,但检查xml doc,id标记也包含url。
我遇到了同样的问题。 Chirp Chirp!
答案 1 :(得分:0)
在didStartElement
方法中,您可以通过参数attributeDict
访问该属性,该参数应返回["href":"www.whatever.com"]
找到答案here
这是针对Tanksale的CS320 Midterm吗?祝你好运!