6
我有一些XML的Scala表示(即scala.xml.Elem
),我想用它與一些標準的Java XML API(特別是SchemaFactory)。它看起來像我的Elem
轉換爲javax.xml.transform.Source
是我需要做的,但我不知道。我可以看到各種方法來有效地寫出我的Elem
並將其讀入與Java兼容的某些東西,但我想知道是否有更優雅的方法(並且希望效率更高)?如何將scala.xml.Elem轉換爲與javax.xml API兼容的東西?
Scala代碼:
import java.io.StringReader
import javax.xml.transform.stream.StreamSource
import javax.xml.validation.{Schema, SchemaFactory}
import javax.xml.XMLConstants
val schemaXml = <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="foo"/>
</xsd:schema>
val schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
// not possible, but what I want:
// val schema = schemaFactory.newSchema(schemaXml)
// what I'm actually doing at present (ugly)
val schema = schemaFactory.newSchema(new StreamSource(new StringReader(schemaXml.toString)))
感謝您的回覆。雖然這種方式看起來更好,但它仍然將Elem寫入字符串並將其讀回,這是我希望避免的。 – overthink 2009-11-24 13:49:57
由於替代品並沒有完全氾濫,我將接受這個答案(我也堅持在我的應用程序中使用這種方法)。謝謝。 – overthink 2009-11-27 14:05:11
沒問題。我希望我知道更好的答案,但我對Java不太熟悉。我因爲Scala而跳入Java生態系統。至少這樣你的代碼會更加簡潔。 – 2009-11-27 18:04:16