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

XML: _clear_id_cachenode.ownerDocument._id_cache.clear()

Beitragvon cullmann » Montag 21. April 2008, 01:03

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

Beitragvon audax » Montag 21. April 2008, 08:22

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

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

Beitragvon Leonidas » Montag 21. April 2008, 13:15

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

Beitragvon cullmann » Montag 21. April 2008, 21:22

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

Beitragvon Janux » Samstag 6. Dezember 2008, 19:52

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

Beitragvon DasIch » Samstag 6. Dezember 2008, 20:26

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.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder