XML दस्तावेज़ स्ट्रिंग करने के लिए


104

XML दस्तावेज़ के स्ट्रिंग प्रतिनिधित्व को प्राप्त करने का सबसे सरल तरीका क्या है org.w3c.dom.Document? कि सभी नोड्स एक ही लाइन पर होंगे।

एक उदाहरण के रूप में, से

<root>
  <a>trge</a>
  <b>156</b>
</root>

(यह केवल एक पेड़ का प्रतिनिधित्व है, मेरे कोड में यह एक org.w3c.dom.Documentवस्तु है, इसलिए मैं इसे एक स्ट्रिंग के रूप में नहीं मान सकता)

सेवा

"<root> <a>trge</a> <b>156</b> </root>"

धन्यवाद!



जवाबों:


207

मान लें docकि आपका उदाहरण है org.w3c.dom.Document:

TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(writer));
String output = writer.getBuffer().toString().replaceAll("\n|\r", "");

12
replaceAll: शायद आवश्यक नहीं है, तो आप एक और उत्पादन प्रॉपर्टी जोड़ते हैtransformer.setOutputProperty(OutputKeys.INDENT, "no");
bvdb

10
और writer.getBuffer().toString()बस हो सकता हैwriter.toString()
bvdb

@bvdb दोनों उत्कृष्ट अंक। स्पष्ट रूप से OutputKeys.INDENTलाइन जोड़ने का एक अतिरिक्त लाभ है , क्योंकि तब आप इसे "yes"व्हाट्सएप रखने के लिए भी सेट कर सकते हैं - यदि आप यही चाहते हैं (मेरी स्थिति में मैंने पाया है कि replaceAllव्हाट्सएप को शामिल करने के लिए सिर्फ हटाने का काम नहीं किया गया था स्ट्रिंग)।
जोनाथन बेन

यह भी देखें stackoverflow.com/questions/1384802/... कैसे काम करने के लिए मांगपत्र ठीक से प्राप्त करने के लिए के लिए स्पष्टीकरण
जोनाथन बेन

2

Apache XMLSerializer का उपयोग करें

यहाँ एक उदाहरण है: http://www.informit.com/articles/article.asp?p=31349&seqNum=3&rl=1

आप इसे भी देख सकते हैं

http://www.netomatix.com/XmlFileToString.aspx


Xerces अभी भी हास्यास्पद है, मावेन के माध्यम से आधिकारिक तौर पर वितरित नहीं कर रहा है (इस प्रकार ग्रूवी भी), जिसमें कोई विश्वसनीय स्रोत या JavaDocs, WTF शामिल नहीं है! कोई आधिकारिक मावेन समर्थन पदावनति संकल्प को कठिन नहीं बनाता है, लगातार अपडेट को अधिक परेशानी देता है, और सुरक्षा जोखिम पैदा करता है, इसलिए अब इस पर कोई निर्भरता होना बेवकूफी है!
इन्फर्नोज़

1

सबसे पहले आपको अपने सभी टेक्स्ट नोड्स में सभी न्यूलाइन वर्णों से छुटकारा पाने की आवश्यकता है। तब आप अपने DOM ट्री को आउटपुट करने के लिए एक पहचान परिवर्तन का उपयोग कर सकते हैं। के लिए javadoc को देखें TransformerFactory#newTransformer()

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.