2011-09-05 12 views
10

Scalaには独自のXMLライブラリがあり、Scalaには組み込みのサポートが用意されています。しかし、この言語の主な機能の1つは、Javaの互換性として宣伝されることです。私はスカラーを使用するのと同様の方法でJava Nodeオブジェクトを使用できると期待しています。Java xmlオブジェクトをScala xmlオブジェクトに簡単に変換できますか?

私の質問は以下のとおりです。

  • ScalaのものにJavaのXMLコンテナを変換する最も簡単な方法は何ですか?
  • あなたのために何かすてきな意味がありますか?
  • Scala APIにJava Elementを取り込むコンストラクタはありますか?

答えて

1

だから、私の周り掘ってきたし、これは私が見つけることができる最善の方法です:http://www.jdom.org/docs/apidocs/org/jdom/output/XMLOutputter.html

これを使用する最も簡単な方法を暗黙的に次のようになります。

implicit def javaToScalaXML(jElem: org.jdom.Element): scala.xml.Element = { 
    return XML.loadstring(XMLOuputter.outputString(jElem)) 
} 

これではありません本当に大きなxmlオブジェクトはStringに変換されてからXMLオブジェクトに戻ってきますが、これは中小サイズのオブジェクトにも有効です。

1

Scala XMLでは正確ではありませんが、Scales Xmlの解決策があります。

これは、完全なTrAXサポートを提供し、通常の 'Sun' JAXPインプリメント(他のすべてのプロバイダがこれを許可しているわけではない)では、StAXを使用した変換が可能です。つまり、最初に文字列にシリアル化せずにScales XmlとJAXP(またはTrAXをサポートする他のモデル)を変換できます。

ただし、3つのScala Xmlのすべての代替機能の不変性を考慮すると、実際には直接サポートされていないストレートDOMオブジェクトのための既存のインフラストラクチャがたくさんあります。

+0

どうすればよいですか?私はちょうどここのトピックに質問を投稿しました:http://stackoverflow.com/questions/19044333/how-to-convert-scala-scales-xml-to-dom-sax – underspecified

関連する問題