2016-05-30 7 views
0

Ich habe letzte Woche einen Thread this gemacht, aber habe keine Antworten bekommen, vielleicht war es zu schlecht formuliert und daher unverständlich. Wie man ein einzelnes öffnendes oder schließendes Tag in einem XML mit minidom löscht

mit Python 3.5 und die Standard minidom, würde Ich mag wissen, ob es möglich ist, dies zu drehen:

<EditData_Score> 
<EditDataType>BEAT_SCORE</EditDataType> 
<Beat> 
<EditDataType>BEAT_MARK</EditDataType> 
</Beat> 
</EditData_Score> 

in diese (kein Starttag für Eltern-Element):

<EditDataType>BEAT_SCORE</EditDataType> 
<Beat> 
<EditDataType>BEAT_MARK</EditDataType> 
</Beat> 
</EditData_Score> 

und oder diesen (kein schließender Tag für Eltern-Element):

<EditData_Score> 
<EditDataType>BEAT_SCORE</EditDataType> 
<Beat> 
<EditDataType>BEAT_MARK</EditDataType> 
</Beat> 

würde ich denken, wenn ich die Zeilennummer weiß Ich könnte es einfach so löschen, aber von dem, was ich recherchiert habe, gibt es keinen sauberen Weg, es in Minidom zu tun.

Danke!

+0

von 'Elternelement' meinst du 'Wurzelelement'? – TheLazyScripter

+0

Danke für die Antwort, TheLazyScripter. Ich entschuldige mich für meinen Mangel an XML-Jargon. Referenzierung [this] (http://www.w3schools.com/xml/xml_tree.asp) xml-Baumstruktur Ich würde denken, dass diese Elementzeile der Stamm ist, da 98% der xml-Elemente darin verschachtelt sind: ; Ich möchte im Grunde ein öffnendes oder schließendes Tag (nicht beides) von einem Kindelement entfernen, das andere Elemente enthält. – kusogaki

Antwort

0

Wenn XML-Daten in eine DOM-Darstellung geladen werden, ist das Konzept der öffnenden/schließenden Tags nicht vorhanden. Das DOM kennt Elemente und deren Inhalt. Die Existenz von Tags (Öffnen und Schließen) hat nur mit der serialisierten Version des DOM zu tun - d. H. Sie sind ein notwendiger Teil der serialisierten Codierung, aber NICHT Teil der Semantik des Dokuments.

Eine serialisierte Darstellung mit mehreren Top-Level-Tags oder fehlendem Start- oder End-Tag ist keine gültige Darstellung eines XML-Dokuments und kann nicht in ein DOM (oder programmgesteuert in einem DOM) geladen werden.

Wenn Sie dies tun müssen, müssen Sie die Ausgabe entweder mit einem Ausgabefilter oder einem separaten Programm nachbearbeiten oder einen benutzerdefinierten Serializer schreiben.

+0

Jim Garrison, vielen Dank für die kurze Erklärung. Dank dessen habe ich ein besseres Verständnis davon, wie ich es benutzen soll. Ich bin mir nicht ganz sicher, ob ich öffnende/schließende Tags löschen muss. Ich bin mir nur sicher, dass ich den Inhalt der Elemente manipulieren muss. – kusogaki