Seite 1 von 1

XML lesen. Welche Methode?

Verfasst: Sonntag 1. August 2010, 12:36
von burli
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?

Re: XML lesen. Welche Methode?

Verfasst: Sonntag 1. August 2010, 13:22
von 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']

Re: XML lesen. Welche Methode?

Verfasst: Sonntag 1. August 2010, 13:37
von burli
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

Re: XML lesen. Welche Methode?

Verfasst: Sonntag 1. August 2010, 15:39
von burli
Alles klar, es tut, was es soll. Besten Dank für den Tipp