2016-08-19 4 views
0

Ich habe ein XML-Dokument wie unten angegeben.Java-Code zum Einfügen neuer Elemente in innere untergeordnete Knoten

<rootElement> 
    <fisrtElement> 
     <firstElementChild> 
      <child1>A</child1> 
      <child2>B</child2> 
     </firstElementChild> 
    </fisrtElement> 
</rootElement> 

Jetzt brauche ich einen untergeordneten Knoten hinzuzufügen, <child3>C</child3>, in dieses XML-Dokument, so dass mein letztes XML-Dokument wie unten aussehen wird.

<rootElement> 
    <fisrtElement> 
     <firstElementChild> 
      <child1>A</child1> 
      <child2>B</child2> 
      <child3>C</child3> 
     </firstElementChild> 
    </fisrtElement> 
</rootElement> 

Ich brauche einen Java-Code dafür. Ich habe google gesucht und jetzt weiß ich, wie Elemente zum Wurzelelement unter Verwendung DocumentBuilderFactory hinzugefügt werden. Aber ich mache es nicht für innere Knoten, wie ich oben angegeben habe. Bitte um Rat.

bearbeiten

Ich habe für das Hinzufügen von neuen Element den unten snippent versucht.

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
Document doc = docBuilder.parse(new File("./sample.xml")); 

Element itemNode = doc.createElement("child3"); 
itemNode.appendChild(doc.createTextNode("C")); 
Node channelNode = doc.getElementsByTagName("channel").item(0); 
channelNode.appendChild(itemNode); 

Und die Ausgabe ist etwas wie unten.

<rootElement> 
    <fisrtElement> 
     <firstElementChild> 
      <child1>A</child1> 
      <child2>B</child2> 
      <child3>c</child3> 
     </firstElementChild> 
    </fisrtElement> 
</rootElement> 

und wenn ich lief den Code erneut mit der Modifikation unten,

Element itemNode = doc.createElement("child4"); 
itemNode.appendChild(doc.createTextNode("D")); 

Der dritte Kind Knoten <child3>C</child3> wird immer mit dem vierten Kind ersetzt <child4>D</child4>. Was ich brauche, ist inkrementell Kindknoten für <firstElementChild> hinzuzufügen. Was ich hier vermisse. Bitte geben Sie einen Rat. Danke im Voraus.

Antwort

Verwandte Themen