Python und xml(minidom)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
PNS-Richi
User
Beiträge: 68
Registriert: Donnerstag 17. Januar 2008, 01:48

Hallo,

ich hab ein Problem mit XML und Python. "minidom.toprettyxml()" funktioniert nicht ganz, wenn ich "removeChild(Node)" verwende.

Die Datei davor:

Code: Alles auswählen

<?xml version="1.0" ?>

<install_list>
	<package package_id="firefox"/>
	<package package_id="gimp"/>
	<package package_id="nx"/>
</install_list>
Die Datei nach "removeChild(Node)" und "minidom.toprettyxml()":

Code: Alles auswählen

<?xml version="1.0" ?>

<install_list>

	
	

	<package package_id="firefox"/>

	
	

	<package package_id="gimp"/>

	


	<package package_id="nx"/>

</install_list>
Hat wer eine Ahnung warum dies so ist?

Ich weiß es gibt andere Module außer dem mitgelieferten XML Modul. Ich verwende das mitgelieferte als Fallback, falls das andere XML Modul fehlen sollte. Das mitgelieferte XML Modul ignoriert auch DTD(ich weiß, aber gleich die ganze Deklaration löschen?) und entfernt die Deklarationen auch, kann man das irgendwie unterbinden?

Ich verwende Python 2.7.

lg Richi
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

Poste doch bitte auch den Python-Code, den du verwendest. Dann kann man leichter beurteilen, ob Du minidom richtig verwendest.
https://www.xing.com/go/invite/18513630.6a91d4
PNS-Richi
User
Beiträge: 68
Registriert: Donnerstag 17. Januar 2008, 01:48

Hallo,

ich poste morgen eine Kurzversion, welche die Problematik zeigen soll. Vorerst will ich mal auf den Beitrag hier verweisen: http://stackoverflow.com/questions/2210 ... ce-problem

Eine Lösung habe ich, ich entferne einfach leere Textknoten, welche manchmal beim entfernen von "Knoten" entstehen.

lg Richi
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Also bevor man sich an dem Problem tot optimiert: Motte doch minidom ein und setze auf die ElementTree-API (oder ggf. auf das externe Modul lxml).
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten