2016-06-01 17 views
0

属性見つけることができません。ScalaのXMLは、私は、次のXMLからXML属性を解析しようとしています

<?xml version="1.0"?> 
<data> 
    <country name="Liechtenstein"> 
     <rank>1</rank> 
     <year>2008</year> 
     <gdppc>141100</gdppc> 
     <neighbor name="Austria" direction="E"/> 
     <neighbor name="Switzerland" direction="W"/> 
    </country> 
    <country name="Singapore"> 
     <rank>4</rank> 
     <year>2011</year> 
     <gdppc>59900</gdppc> 
     <neighbor name="Malaysia" direction="N"/> 
    </country> 
    <country name="Panama"> 
     <rank>68</rank> 
     <year>2011</year> 
     <gdppc>13600</gdppc> 
     <neighbor name="Costa Rica" direction="W"/> 
     <neighbor name="Colombia" direction="E"/> 
    </country> 
</data> 

具体的には、私は国のタグからname属性を取得したいです。私はこのコードを使用しています:

import scala.xml.XML 

object XmlReader { 
    def main(args: Array[String]) { 
     val xml = XML.loadFile("src/main/resources/country_data.xml") 
     println(xml \\ "data" \\ "country" \ "@name") 
    } 
} 

私は何をしようと、私は空の値を取得します。私はそれを実行するときにXMLが表示されるのを見ることができるので、 "xml \ 'data' \ 'country'"は良いです。しかし、私は国のタグの属性を取得しようとすると、私は何も得られません。私はこのチュートリアルが示していることを正確にやっているようですが(http://alvinalexander.com/scala/scala-xml-searching-xmlns-namespaces-xpath-parsing)、結果は得られません。

アップデート:私は1つの国だけのノードは、以下の作品がある場合:

(xml \\ "data" \ "country" \ "@name").text 

を私がなぜ分かりません。

+0

これはチュートリアルと同じことではなく、変数を設定しています。それはあなたのために働くのですか? – choroba

+0

いいえ、結果をvalに保存してそれを印刷しましたが、まだ何も得られません。 – redeagle47

答えて

1

検索に複数のヒットがある場合は、ノードリストが戻ってきます。ループで繰り返し処理することができます。

val xml = <r><p><c a="first"/><c a="second"/></p></r> 
for (c <- xml \\ "r" \\ "p" \\ "c") { 
    println(c \\ "@a") 
} 
+0

それもうまくいかなかった。私は何が起こっているのか分からない。 – redeagle47

+0

@ redeagle47:悪いですが、最初の軸は '' \\ ''でなければなりません。 – choroba

+0

@ redeagle47:アップデートを確認してください。 – choroba

関連する問題