Bazı XML (örneğin, scala.xml.Elem
) Scala gösterimi var ve bunu standart Java XML API'lerinden bazılarıyla kullanmak istiyorum (özellikle SchemaFactory). Elem
'u javax.xml.transform.Source
'a dönüştürmem gerekiyor, yapmam gereken şey ama emin değilim. Elem
'u etkin bir şekilde yazmam ve Java ile uyumlu bir şeye okumanın çeşitli yollarını görebiliyorum ama daha zarif (ve umarım daha verimli) bir yaklaşımın var mı diye merak ediyorum.scala.xml.Elem'i javax.xml API'leriyle uyumlu bir şeye nasıl dönüştürebilirim?
Scala kodu: Ne istiyorsun
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)))
Yanıt için teşekkürler. Bu şekilde kesinlikle daha güzel görünmekle birlikte, hala Elem'i bir String'e yazıyor ve geri almayı umuyordum. – overthink
Alternatifler tam olarak sel baskın olmadığından, bu cevabı kabul edeceğim (uygulamamdaki bu yaklaşıma da takıldım). Teşekkürler. – overthink
Sorun değil. Keşke daha iyi bir cevabı biliyor olsaydım, ama Java'ya fazla aşina değilim. Scala'dan dolayı Java ekosistemine geri dönüyorum. En azından bu şekilde kodunuz daha özlü olacak. –