Ich erstelle ein GUI-Frontend für die Eve Online-API in Python.
Ich habe die XML-Daten erfolgreich von ihrem Server abgerufen.
Ich versuche, den Wert von einem Knoten namens "Name" abzurufen:
from xml.dom.minidom import parse
dom = parse("C:\\eve.xml")
name = dom.getElementsByTagName('name')
print name
Dies scheint den Knoten zu finden, aber die Ausgabe ist unten:
[<DOM Element: name at 0x11e6d28>]
Wie kann ich den Wert des Knotens drucken lassen?
Antworten:
Es sollte einfach so sein
quelle
Wahrscheinlich so etwas, wenn es der gewünschte Textteil ist ...
Der Textteil eines Knotens wird als Knoten an sich betrachtet, der als untergeordneter Knoten des von Ihnen angeforderten Knotens platziert wird. Daher möchten Sie alle untergeordneten Knoten durchgehen und alle untergeordneten Knoten finden, die Textknoten sind. Ein Knoten kann mehrere Textknoten haben. z.B.
Sie möchten sowohl 'blabla' als auch 'znylpx'; daher die "" .join (). Möglicherweise möchten Sie das Leerzeichen durch eine neue Zeile oder so oder durch nichts ersetzen.
quelle
Sie können so etwas verwenden. Es hat für mich geklappt
quelle
Ich weiß, dass diese Frage jetzt ziemlich alt ist, aber ich dachte, Sie könnten es mit ElementTree leichter haben
Ich weiß, dass das nicht sehr spezifisch ist, aber ich habe es gerade entdeckt, und bis jetzt ist es viel einfacher, meinen Kopf herumzukriegen als das Minidom (da so viele Knoten im Wesentlichen Leerzeichen sind).
Zum Beispiel haben Sie den Tag-Namen und den eigentlichen Text zusammen, genau wie Sie es wahrscheinlich erwarten würden:
quelle
Die obige Antwort ist richtig, nämlich:
Für mich, wie für andere, war mein Wert jedoch weiter unten im Baum:
Um dies zu finden, habe ich Folgendes verwendet:
Das Ausführen für meine einfache SVG-Datei, die mit Inkscape erstellt wurde, gab mir Folgendes:
Ich habe xml.dom.minidom verwendet. Die verschiedenen Felder werden auf dieser Seite, MiniDom Python, erläutert.
quelle
Ich hatte einen ähnlichen Fall, was für mich funktionierte war:
name.firstChild.childNodes [0] .data
XML soll einfach sein und es ist wirklich so und ich weiß nicht, warum Pythons Minidom es so kompliziert gemacht hat ... aber so ist es gemacht
quelle
Hier ist eine leicht modifizierte Antwort von Henrik für mehrere Knoten (dh wenn getElementsByTagName mehr als eine Instanz zurückgibt)
quelle
Die Frage wurde beantwortet, mein Beitrag besteht darin, eine Sache zu klären, die Anfänger verwirren kann:
Einige der vorgeschlagenen und korrekten Antworten wurden verwendet,
firstChild.data
anderefirstChild.nodeValue
stattdessen. Wenn Sie sich fragen, was der Unterschied zwischen ihnen ist, sollten Sie sich daran erinnern, dass sie dasselbe tun, da diesnodeValue
nur ein Alias für istdata
.Der Verweis auf meine Aussage kann als Kommentar zum Quellcode von minidom gefunden werden :
quelle
Es ist ein Baum, und es kann verschachtelte Elemente geben. Versuchen:
quelle