Ableitung von Ergebnisklasse

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
template
User
Beiträge: 29
Registriert: Mittwoch 21. November 2007, 09:44

Hallo,

ich würde gerne eine klasse von xml.dom.node ableiten und zusätzliche funktionen hinzufügen. Nun habe ich aber das Problem, das Funktionen wie xml.dom.minidom.parse ja irgendwie ein node Objekt zurück liefert, das wiederum child nodes enthält. Nun würde ich gerne erreichen, das statt dessen meine abgeleitete Klasse hier verwandt wird. Wie macht man sowas?

Vielen dank im voraus
template
BlackJack

Schwierig, weil ja nahezu beliebige Parser verwendet werden können, die letztendlich die Knoten erzeugen.

Wahrscheinlich ist es einfacher nicht mit Vererbung sondern Delegation zu arbeiten. Also parsen und dann über den Baum traversieren und die ganzen Knoten in Wrapper-Objekte verpacken, welche die zusätzlichen Funktionen bieten und alles andere an den verpackten Knoten weiterleiten. Oder die neuen Methoden den vorhandenen Objekten hinzufügen.

Oder nicht diesen DOM-Kram benutzen. :-)
template
User
Beiträge: 29
Registriert: Mittwoch 21. November 2007, 09:44

Danke für die schnelle Antwort. Naja ich würde gerne voerst ohne externe Bibliotheken auskommen und Python ab 2.4 unterstützen und da bleibt fast nur xml.dom.minidom. Allerdings ist das Interface ziemlich fummelig.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

template hat geschrieben:Danke für die schnelle Antwort. Naja ich würde gerne voerst ohne externe Bibliotheken auskommen und Python ab 2.4 unterstützen und da bleibt fast nur xml.dom.minidom. Allerdings ist das Interface ziemlich fummelig.
Was spricht dagegen, Elementtree herunter zu laden und mit'n in'n Ordner zu packen? Das sind nur wenige Kilobytes mehr.
BlackJack

Wenn es mit (2.4er) Bordmitteln sein soll würde ich einen SAX-Parser benutzen um einen eigenen Element-Baum mit *meinen* Objekten aufzubauen. Womit ich dann wahrscheinlich ElementTree selber programmieren würde. Also kann ich auch gleich das nehmen. Oder `lxml.etree`.
Antworten