2011-09-05 65 views
10

Scala有自己的XML庫,它提供了對它的內置支持。然而,該語言的主要特徵之一就是被稱爲Java兼容性。我希望能夠以類似的方式使用java節點對象,因爲我使用的是scala。有沒有一種快速的方法將Java xml對象轉換爲Scala xml對象?

我的問題是:

  • 什麼是的Java XML容器轉換爲斯卡拉的人的最快方法是什麼?
  • 有什麼好的暗示爲你做點什麼嗎?
  • 有沒有一個構造函數需要一個java元素,比如在Scala API中?

回答

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 impl(並非所有其他提供者都允許)下允許使用StAX進行轉換。這意味着您可以在Scales Xml和JAXP(或任何其他支持TrAX的模型)之間進行轉換,而無需先序列化爲字符串。

然而,由於所有三個Scala Xml替代品的不可變性,直接的DOM對象並不是真的可以直接支持,但是現有的基礎設施很多。

+0

你是如何做到這一點的?我只是在這裏發佈了一個關於這個話題的問題:http://stackoverflow.com/questions/19044333/how-to-convert-scala-scales-xml-to-dom-sax – underspecified