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

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
Gab
User
Beiträge: 21
Registriert: Montag 17. August 2009, 14:45

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
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'
Gab
User
Beiträge: 21
Registriert: Montag 17. August 2009, 14:45

Danke :D
Antworten