XML lesen. Welche Methode?

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
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Ich möchte aus einer XML Datei gezielt Werte auslesen. Die Datei ist in etwa so aufgebaut

Code: Alles auswählen

<?xml version="1.0"?>
<Node>
  <Node1>
    <Node11>Value</Node11>
    <Node12>Value</Node12>
  </Node1>
  <Node2>
    <Node21>Value</Node21>
    <Node22>Value</Node21>
  </Node2>
</Node>
Dh, die Pfade sind immer eindeutig und die Namen sind bekannt. Ich möchte jetzt einfach nur gezielt die Values auslesen, in etwa

result = GetValue("Node/Node1/Node11")

Ich weiß nur nicht, was dafür geeignet ist. DOM? SAX? ElementTree?
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
BlackJack

@burli: `lxml` und XPath bzw. wenn es wirklich so einfach ist, reicht die XPath-Untermenge von `ElementTree` auch aus.

Edit:

Code: Alles auswählen

In [493]: source = '''<?xml version="1.0"?>
<Node>
  <Node1>
    <Node11>Value</Node11>
    <Node12>Value</Node12>
  </Node1>
  <Node2>
    <Node21>Value</Node21>
    <Node22>Value</Node22>
  </Node2>
</Node>
'''

In [505]: doc = etree.fromstring(source)

In [506]: doc.xpath('/Node/Node1/Node11')
Out[506]: [<Element Node11 at a350be4>]

In [507]: doc.xpath('/Node/Node1/Node11')[0].text
Out[507]: 'Value'

In [508]: doc.xpath('/Node/Node1/Node11/text()')
Out[508]: ['Value']
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Danke. Das mit XPath hab ich vermutet, aber ich habe die ganze Zeit keine brauchbare Dokumentation gefunden.

Gerade habe ich aber etwas gefunden, was meinem Problem in etwa entspricht

EDIT: Hoppla, danke. Hab deinen Edit erst nach dem Post gesehen. Danke
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Alles klar, es tut, was es soll. Besten Dank für den Tipp
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
Antworten