2016-10-04 17 views
-1

私はXMLファイルを解析し、ラベルを介して属性の一部を表示するSwift 3.0のアプリケーションに取り組んでいます。そのほとんどが正しく動作していますが、 <link href = "..."/>タグを含むXMLの部分を解析しようとした場合を除き、正しく動作しています。私がこれをしようとすると、アプリケーションがクラッシュし、 "致命的なエラー:範囲外のインデックス"メッセージが表示されます。 は、ここに私が使用しているXMLです:https://alerts.weather.gov/cap/fl.php?x=0 そしてここでは、私のコードです:SwiftのXMLからリンク "href"タグを解析するには?

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

、あなたは["href":"www.whatever.com"]

を返すべきパラメータattributeDictを通じて、その属性にアクセスすることができます答えhere

がTanksaleのCS320中期のためにこれは見つかりましたか?それにかかわらず、幸運!

+0

ハァー、それは確かです!そのクラスの人が助けを求めるときにこの質問を見つけることができるのだろうかと思っていました。ありがとう! –

0

これは回避策ですが、idmlタグにurlも含まれていることをXML文書で確認してください。

私は同じ問題を抱えていました。チャープチャープ!あなたのdidStartElement方法で

関連する問題