Seite 1 von 1

lxml liest nicht kompletten String aus, wie lösen?

Verfasst: Donnerstag 23. September 2010, 14:41
von Gab
Hallo,

ich muß eine Reihe von xml-Daten verarbeiten, die folgende Elemente enthalten können:
<root><string>text1<char code="0A"/> text2</string></root>
Normalerweise ist das mit lxml einfach auszulesen.
Aber der Code:

Code: Alles auswählen

import lxml.etree as lxml
test = lxml.parse ("d:\\test.xml")
text = test.xpath ("//string")[0].text
print (text)
hat als Ergebnis nur
text1
, der zweite Teil des strings wird unterdrückt. Wie kann ich das beheben?

Merci!
gab

Re: lxml liest nicht kompletten String aus, wie lösen?

Verfasst: Donnerstag 23. September 2010, 15:27
von BlackJack
Der zweite Teil wird nicht unterdrückt, der ist im `text`-Attribut vom `char`-Element. Du kannst mit XPath einfach alle Textknoten abfragen und die dann zusammenfügen:

Code: Alles auswählen

In [723]: doc.xpath('//string/text()')
Out[723]: ['text1', ' text2']

In [724]: ''.join(doc.xpath('//string/text()'))
Out[724]: 'text1 text2'

Re: lxml liest nicht kompletten String aus, wie lösen?

Verfasst: Freitag 24. September 2010, 09:57
von Gab
Danke :D