Text aus XML in Python erhalten

from xml.dom.minidom import parseString dom = parseString(data) data = dom.getElementsByTagName('data') 

Die Variable "data" kehrt als Elementobjekt zurück, aber ich kann nicht für das Leben von mir in der Dokumentation sehen, um den Textwert des Elements zu greifen.

Beispielsweise:

  • Wie pflicht man Daten aus einer Textdatei in ein 2D-Array in Python?
  • Schreiben eines Parsers für reguläre Ausdrücke
  • Filtern von Verzeichnissen beim Analysieren von cpp-Dateien in get-includes in pythonbindungen / clang
  • Python: Injizieren von HTML-Inhalten in ein Tag mit `lxml.html`
  • Regulärer Ausdruck, um alle Zeichen zwischen zwei Sonderzeichen zurückzugeben
  • Python HTML-Parsing aus der URL
  •  <something><data>I WANT THIS</data></something> 

    Wer hat irgendwelche Ideen?

  • Wie man die Ausgabe des Teilprozesses in Python 2.7 versteckt
  • 2 Solutions collect form web for “Text aus XML in Python erhalten”

    Das sollte der Trick machen:

     dom = parseString('<something><data>I WANT THIS</data></something>') data = dom.getElementsByTagName('data')[0].childNodes[0].data 

    Dh du musst tiefer in die DOM-Struktur wechseln, um am Textkindknoten zu kommen und dann auf seinen Wert zuzugreifen.

    Also der Weg, um es zu betrachten ist, dass "I WANT THIS" ist eigentlich ein weiterer Knoten. Es ist ein Textkind von "Daten".

     from xml.dom.minidom import parseString dom = parseString(data) nodes = dom.getElementsByTagName('data') 

    An diesem Punkt ist "nodes" ein NodeList und in deinem Beispiel hat es ein Element, welches das "data" Element ist. Entsprechend hat das "data" -Element auch nur ein Kind, das ein Textknoten "I WANT THIS" ist.

    So könntest du einfach so etwas machen:

     print nodes[0].firstChild.nodeValue 

    Beachten Sie, dass in dem Fall, in dem Sie mehr als ein Tag namens "Daten" in Ihrer Eingabe haben, sollten Sie eine Art von Iteration Technik auf "Knoten" verwenden, anstatt es direkt zu indizieren.

    Python ist die beste Programmiersprache der Welt.