Hier ist eine Lösung, die ich mit dom4j gefunden habe Bibliothek gefunden habe. (Ich habe überprüft, ob es funktioniert.)
Lesen Sie das XML-Fragment in ein org.dom4j.Document
(Hinweis: Alle unten verwendeten XML-Klassen stammen aus org.dom4j; siehe Anhang):
String newNode = "<node>value</node>"; // Convert this to XML
SAXReader reader = new SAXReader();
Document newNodeDocument = reader.read(new StringReader(newNode));
Holen Sie sich dann das Dokument, in das der neue Knoten eingefügt wird, und das übergeordnete Element (zu sein) daraus. (Ihr org.w3c.dom.Document müsste hier in org.dom4j.Document konvertiert werden.) Zu Testzwecken habe ich eines wie folgt erstellt:
Document originalDoc =
new SAXReader().read(new StringReader("<root><given></given></root>"));
Element givenNode = originalDoc.getRootElement().element("given");
Das Hinzufügen des neuen untergeordneten Elements ist sehr einfach:
givenNode.add(newNodeDocument.getRootElement());
Erledigt. Die Ausgabe originalDoc
ergibt jetzt:
<?xml version="1.0" encoding="utf-8"?>
<root>
<given>
<node>value</node>
</given>
</root>
Anhang : Da es sich bei Ihrer Frage um eine Frage handelt, erfahren Sie org.w3c.dom.Document
hier, wie Sie zwischen dieser und konvertieren org.dom4j.Document
.
DOMWriter writer = new DOMWriter();
org.w3c.dom.Document w3cDoc = writer.write(dom4jDoc);
DOMReader reader = new DOMReader();
Document dom4jDoc = reader.read(w3cDoc);
(Wenn Sie beide Arten von Document
s regelmäßig benötigen , ist es möglicherweise sinnvoll, diese in ordentliche Dienstprogrammmethoden zu integrieren, möglicherweise in eine Klasse namens XMLUtils
oder so ähnlich.)
Vielleicht gibt es bessere Möglichkeiten, dies auch ohne Bibliotheken von Drittanbietern zu tun. Von den bisher vorgestellten Lösungen ist dies meiner Ansicht nach der einfachste Weg, selbst wenn Sie die dom4j <-> w3c-Konvertierungen durchführen müssen.
Update (2011): Beachten Sie vor dem Hinzufügen der dom4j-Abhängigkeit zu Ihrem Code, dass es sich nicht um ein aktiv verwaltetes Projekt handelt und auch einige andere Probleme auftreten . Die verbesserte Version 2.0 ist seit Ewigkeiten in Arbeit, es ist jedoch nur eine Alpha-Version verfügbar. Möglicherweise möchten Sie stattdessen eine Alternative wie XOM in Betracht ziehen. Lesen Sie mehr in der oben verlinkten Frage.