ScalaでXML

ScalaXMLを扱うときに要素や属性の取得方法がぐぐってもなかなか出てこなかったのでメモ。Nodeの\メソッドを使うのが一番簡単みたい。

package hoge

object SimpleXml {
  def main(args : Array[String]) : Unit = {
    val xml = <a name="a"><b name="b1"/><b name="b2"/></a>

    // 属性の取得
    Console.println((xml \ "@name").text);            
    // 一番目のb要素の取得
    Console.println((xml \ "b")(0));
    // 2番目のb要素のname属性
    Console.println(((xml \ "b")(1) \ "@name").text);
  }
}

\のReturnTypeはNodeSeqだから、属性の値がほしい場合はtextを参照すればいいらしい。

ちょっとカッコよくない?コレ。