【发布时间】:2011-11-06 20:26:54
【问题描述】:
Scala 有自己的 XML 库,并为其提供内置支持。但是,该语言的主要特征之一是被吹捧为 Java 兼容性。我希望能够以与使用 scala 对象类似的方式使用 java Node 对象。
我的问题是:
- 将 java xml 容器转换为 scala 容器的最快方法是什么?
- 有什么好的隐式可以为你做事吗?
- 在 Scala API 中,是否存在采用 java 元素的构造函数?
【问题讨论】:
Scala 有自己的 XML 库,并为其提供内置支持。但是,该语言的主要特征之一是被吹捧为 Java 兼容性。我希望能够以与使用 scala 对象类似的方式使用 java Node 对象。
我的问题是:
【问题讨论】:
所以,我已经挖掘了,这是我能找到的最好的: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 对象来说不是很漂亮,因为它们会被转换为字符串,然后再转换为 XML 对象,但它适用于中小型对象。
【讨论】:
虽然不完全适用于 Scala XML,但有一个适用于 Scales Xml 的解决方案。
它提供完整的 TrAX 支持,并且在正常的“Sun”JAXP impl 下(并非所有其他提供商都允许这样做),允许使用 StAX 进行转换。这意味着您可以在 Scales Xml 和 JAXP(或任何其他支持 TrAX 的模型)之间进行转换,而无需先序列化为字符串。
然而,鉴于所有三个 Scala Xml 替代方案的不变性,有很多现有的基础设施用于直接 DOM 对象,这些基础设施并不是真正可以直接支持的。
【讨论】: