bin gerade dabei eine große xml Datei einzulesen, was mir soweit auch ganz gut gelingt (Python 2.6, import xml.dom.minidom).
Nun aber mein Problem:
Code: Alles auswählen
<fx:SIGNAL ID="_9d506f6ae2d34b64a52961ab73a6fa88_3" ho:OID="_9d506f6ae2d34b64a52961ab73a6fa88">
<ho:SHORT-NAME>ST_KL</ho:SHORT-NAME>
<ho:LONG-NAME xml:lang="de">Status_Klemme</ho:LONG-NAME>
<ho:LONG-NAME xml:lang="en">status_klemme</ho:LONG-NAME>
Meine Funktion zum Einlesen der Knoten:
Code: Alles auswählen
def _knoten_auslesen(knoten):
return eval("%s('%s')" % (knoten.getAttribute("xml:lang=\"de\""),
knoten.firstChild.data.strip()))Code: Alles auswählen
def lade_dict(dateiname):
d = {}
baum = dom.parse(dateiname)
SIGNAL_ID_Pattern = re.compile(r'fx:SIGNAL ID')
print baum.firstChild
for eintrag in baum.firstChild.childNodes:
if eintrag.nodeName == "fx:ELEMENTS":
wert = None
for knoten in eintrag.childNodes:
if knoten.nodeName == "fx:SIGNALS":
print "Signal"
""" Ebene der einzelnen Signale """
for knoten2 in knoten.childNodes:
if SIGNAL_ID_Pattern.findall(knoten2.nodeName) != "":
print "Typ: ", knoten2.nodeType
print _knoten_auslesen(knoten2) """ FEHLER !!!!!!!! """
""" okay ab hier """
for knoten3 in knoten2.childNodes:
""" KURZNAME des Signals """
if knoten3.nodeName == "ho:SHORT-NAME":
wert = _knoten_auslesen(knoten3)
print wert
""" deutscher LANGNAME des Signals """
if knoten3.nodeName == "ho:LONG-NAME":
if knoten3.getAttribute("xml:lang")=="de":
wert = _knoten_auslesen(knoten3)
print wert 