2017-02-24 3 views
0

Ich beabsichtige, ein Unterelement an einem bestimmten Ort einzufügen. Allerdings weiß ich nicht, wie das zu tun mit appendChild in xml.dom Hier ist mein xml-Code:Hinzufügen von subElement an einem bestimmten Ort mit xml.dom.minidom (appendChild)

<?xml version='1.0' encoding='UTF-8'?> 
 

 
<VOD> 
 
    <root> 
 
\t <ab>sdsd 
 
\t \t <pp>pras</pp> 
 
\t \t <ps>sinha</ps> 
 
\t </ab> 
 
\t <ab>prashu</ab> 
 
\t <ab>sakshi</ab> 
 
\t <cd>dfdf</cd> 
 
    </root> 
 
    <root> 
 
\t <ab>pratik</ab> 
 
    </root> 
 
    <root> 
 
\t <ab>Mum</ab> 
 
    </root> 
 
</VOD>

Ich möchte eine andere Unterelement „neu einfügen "im ersten" root "-Element kurz vor dem" cd "-Tag. Das Ergebnis sollte wie folgt aussehen:

<ab>prashu</ab> 
<ab>sakshi</ab> 
<new>Anydata</new> 
<cd>dfdf</cd> 

Der Code, den ich dafür verwendet wird, ist:

import xml.dom.minidom as m 

doc = m.parse("file_notes.xml") 
root=doc.getElementsByTagName("root") 

valeurs = doc.getElementsByTagName("root")[0] 
element = doc.createElement("new") 
element.appendChild(doc.createTextNode("Anydata")) 
valeurs.appendChild(element) 

doc.writexml(open("newxmlfile.xml","w")) 

In welcher Weise kann ich mein Ziel erreichen?

Vielen Dank im Voraus .. !!

Antwort

0

Verwenden Sie stattdessen insertBefore. Etwas in dieser Richtung:

element = doc.createElement("new") 
element.appendChild(doc.createTextNode("Anydata")) 
cd = doc.getElementsByTagName("cd")[0] 
cd.parentNode.insertBefore(element, cd) 

Um neue Knoten einfügen auf einem Index basiert Sie gerade tun:

cd_list = doc.getElementsByTagName("cd") 
cd_list[0].parentNode.insertBefore(element, cd_list[0]) 
+0

Vielen Dank für die Anregung. insertBefore funktioniert perfekt ... Obwohl es viel praktischer wäre, wenn ich Subelemente mit einem bestimmten Indexwert hinzufügen könnte. Könnte ich das irgendwie machen? –

+0

Ja, Sie können basierend auf einem Indexwert einfügen. Ich werde die Antwort aktualisieren. – Garett

Verwandte Themen