XML: _clear_id_cachenode.ownerDocument._id_cache.clear()

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
cullmann
User
Beiträge: 13
Registriert: Donnerstag 10. April 2008, 19:08
Wohnort: Dublin

Servus,

versuche mich gerade an xml and python und bemühe dazu das hier anscheinend [ironie]recht bliebte [/ironie] buch von galileo.


Also das ganze sieht so aus:

Code: Alles auswählen

import xml.dom.minidom as dom

def _erstelle_eintrag(schluessel, wert): 
    tag_eintrag = dom.Element("eintrag") 
    tag_schluessel = dom.Element("schluessel") 
    tag_wert = dom.Element("wert")

    tag_schluessel.setAttribute("typ", type(schluessel).__name__) 
    tag_wert.setAttribute("typ", type(wert).__name__)

    text = dom.Text() 
    text.data = str(schluessel) 
    tag_schluessel.appendChild(text)

    text = dom.Text() 
    text.data = str(wert) 
    tag_wert.appendChild(text)

    tag_eintrag.appendChild(tag_schluessel) 
    tag_eintrag.appendChild(tag_wert) 
    return tag_eintrag

def schreibe_dict(d, dateiname): 
    baum = dom.Document() 
    tag_dict = dom.Element("dictionary") 
    baum.appendChild(tag_dict)

    for schluessel, wert in d.iteritems(): 
        tag_eintrag = _erstelle_eintrag(schluessel, wert) 
        tag_dict.appendChild(tag_eintrag)

    f = open(dateiname, "w") 
    baum.writexml(f, "", "\t", "\n") 
    f.close()
Und wenn ich das dann wie folgt verwenden möchte:

Code: Alles auswählen

woerterbuch = {"Germany" : "Deutschland", "Spain" : "Spanien"}
chreibe_dict(woerterbuch, "test_dict_to_xml.xml")
Bekomme ich diese schöne fehlermeldung:
Traceback (most recent call last):
File "<pyshell#226>", line 1, in <module>
schreibe_dict(woerterbuch, "test_dict_to_xml.xml")
File "C:/Python25/create_xml_doc.py", line 30, in schreibe_dict
tag_dict.appendChild(tag_eintrag)
File "C:\Python25\lib\xml\dom\minidom.py", line 121, in appendChild
_clear_id_cache(self)
File "C:\Python25\lib\xml\dom\minidom.py", line 1466, in _clear_id_cache
node.ownerDocument._id_cache.clear()
AttributeError: 'NoneType' object has no attribute '_id_cache'

Die frage ist jetzt, wo ist der Fehler da in dem Beispiel?
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Benutz einfach ElementTree und hör nicht auf das doofe Buch.

Hier ist noch mehr Doku dazu:
http://effbot.org/zone/element-index.htm
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

audax hat geschrieben:Benutz einfach ElementTree und hör nicht auf das doofe Buch.
Oder gleich lxml, welches genau das kann, was man sich für ElementTree gewünscht hat: eine nette API, volles XPath und CSS Selectors (letztere sind insbesondere für jQuery-Nutzer eine super Sache).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
cullmann
User
Beiträge: 13
Registriert: Donnerstag 10. April 2008, 19:08
Wohnort: Dublin

OK, bin dabei das mit lxml zuversuchen, aber wie man an meinem gerade neu erstellen thread sieht, klappt das net so richtig bei mir.
Janux
User
Beiträge: 78
Registriert: Donnerstag 12. Juni 2008, 21:11

... aber irgendwie muss das doch auch mit minidom gehen, oder?? :?
mfg ... Janux
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Klar geht das mit minidom aber dass dürfte so kompliziert und bescheuert sein dass (hoffentlich) niemand so eine Lösung in erwägung zieht.
Antworten