मेरे पास कुछ एक्सएमएल (यानी scala.xml.Elem
) का स्कैला प्रतिनिधित्व है, और मैं इसे कुछ मानक जावा एक्सएमएल एपीआई (विशेष रूप से SchemaFactory) के साथ उपयोग करना चाहता हूं। ऐसा लगता है कि मेरे Elem
को javax.xml.transform.Source
में कनवर्ट करना है जो मुझे करने की ज़रूरत है, लेकिन मुझे यकीन नहीं है। मैं अपने Elem
को प्रभावी रूप से लिखने के लिए विभिन्न तरीकों को देख सकता हूं और इसे जावा के साथ संगत कुछ में पढ़ सकता हूं, लेकिन मुझे आश्चर्य है कि क्या एक और अधिक सुरुचिपूर्ण (और उम्मीद है कि अधिक कुशल) दृष्टिकोण है?मैं jalaax.xml एपीआई के साथ संगत कुछ scala.xml.Elem कैसे परिवर्तित कर सकता हूं?
स्काला कोड:
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)))
प्रतिक्रिया के लिए धन्यवाद। हालांकि यह निश्चित रूप से इस तरह से अच्छा दिख रहा है, यह अभी भी एक स्ट्रिंग के लिए एलेम लिख रहा है और इसे वापस पढ़ रहा है, जिसे मैं टालने की उम्मीद कर रहा था। – overthink
चूंकि विकल्प बिल्कुल बाढ़ नहीं आ रहे हैं, इसलिए मैं इस जवाब को स्वीकार करने जा रहा हूं (मैंने अपने ऐप में इस दृष्टिकोण से भी अटक गया है)। धन्यवाद। – overthink
कोई समस्या नहीं है। काश मैं एक बेहतर जवाब के बारे में जानता था, लेकिन मैं जावा से बहुत परिचित नहीं हूँ। मैं स्कैला के कारण जावा पारिस्थितिकी तंत्र में वापस कूद रहा हूं। कम से कम इस तरह आपका कोड अधिक संक्षिप्त होगा। –