क्या इसके लायक है के लिए, यहाँ एक समाधान मैं dom4j लाइब्रेरी का उपयोग कर के साथ आया है । (। मैं जाँच की थी कि यह काम करता है)
पढ़ें एक org.dom4j.Document
में एक्सएमएल टुकड़ा (ध्यान दें: सभी XML नीचे इस्तेमाल किया कक्षाओं org.dom4j से कर रहे हैं; परिशिष्ट देखें):
String newNode = "<node>value</node>"; // Convert this to XML
SAXReader reader = new SAXReader();
Document newNodeDocument = reader.read(new StringReader(newNode));
तब दस्तावेज़ मिल जिसमें नया नोड डाला जाता है, और इसके द्वारा अभिभावक तत्व (होना) होता है। (। आपका org.w3c.dom.Document यहाँ org.dom4j.Document करने के लिए परिवर्तित करने की आवश्यकता होगी) प्रयोजनों के परीक्षण के लिए, मैं इस तरह एक बनाया:
Document originalDoc =
new SAXReader().read(new StringReader("<root><given></given></root>"));
Element givenNode = originalDoc.getRootElement().element("given");
नए बच्चे तत्व जोड़ना बहुत आसान है:
givenNode.add(newNodeDocument.getRootElement());
हो गया। Outputting originalDoc
अब पैदावार:
<?xml version="1.0" encoding="utf-8"?>
<root>
<given>
<node>value</node>
</given>
</root>
परिशिष्ट: आपके प्रश्न के बारे में बात करती है org.w3c.dom.Document
वजह से, यहाँ है कि और org.dom4j.Document
के बीच परिवर्तित करने के लिए कैसे।
// dom4j -> w3c
DOMWriter writer = new DOMWriter();
org.w3c.dom.Document w3cDoc = writer.write(dom4jDoc);
// w3c -> dom4j
DOMReader reader = new DOMReader();
Document dom4jDoc = reader.read(w3cDoc);
(आप Document
रों नियमित रूप से दोनों तरह की जरूरत चाहते हैं, तो यह शायद एक वर्ग XMLUtils
या ऐसा ही कुछ कहा जाता है में साफ उपयोगिता तरीकों में इन डाल करने के लिए, मतलब हो सकता है।)
हो सकता है कि वहाँ
ऐसा करने के बेहतर तरीके हैं, यहां तक कि किसी तीसरे पक्ष के पुस्तकालयों के बिना भी। लेकिन अब तक प्रस्तुत समाधानों में से, मेरे विचार में यह सबसे आसान तरीका है, भले ही आपको dom4j < -> w3c रूपांतरण करने की आवश्यकता हो।
अद्यतन (2011): अपने कोड पर dom4j निर्भरता जोड़ने से पहले, ध्यान दें कि it is not an actively maintained project, and has some other problems too। बेहतर संस्करण 2.0 उम्र के लिए काम में रहा है, लेकिन केवल एक अल्फा संस्करण उपलब्ध है। आप एक्सओएम की तरह वैकल्पिक विकल्प पर विचार करना चाहेंगे; ऊपर जुड़े प्रश्न में और पढ़ें।
भी देखें: http://stackoverflow.com/a/7607435/363573 – Stephan