ScalaでXMLファイルを読み込むにはXMLオブジェクトのloadFileメソッドを使えばいい。のは以前から一応知っていたが、この方法ではルート要素は読めるけど処理命令は読めない。
デバッグモードでステップ実行しつつ見てみたところ、XMLオブジェクトの継承元であるXMLLoaderを直接使えば処理命令も読めることが分かった。
XMLファイル内のコメントを取得するには、さらにハンドラーとかを用意しなければならないようだけど、これも一応出来た。
ところで、XMLファイルを読み込むには、ConstructingParserを使う方法もある。
こっちだとファイル内に指定されているエンコーディングも取れるし、DTD(DOCTYPE)も取れる。特に何もしなくても処理命令やコメントも取れる。
遥かに簡単じゃん!なんだよちくしょーw
Scala XML メモ
.../hishidama/home/tech/scala/xml.html
XMLリテラル
<list>{ List(1,2,3) }</list>
が
<list>123</list>
に変換されるときの「ルールが謎」の話なんですが、これは List 自体の toString() とかではなく、要素それぞれの toString() がXMLに展開されるようです。試しに REPL で
List(1,2,3).map(_.toString).foreach(print)
とすると
123
と表示されます。Mapも同様です。Mapの各要素はTuple2なので、その toString() になります。REPL でも
Map("a"->123, "b"->456).map(_.toString).foreach(print)
で
(a,123)(b,456)
と表示されます。