Diese meine XML-DatenWie alle untergeordneten Knoten in einer einzigen Abfrage mit lxml & XPATH abrufen
ist<location>
<city>
<name> New York</name>
<type>non-capital</type>
</city>
<city>
<name> London</name>
<type>capital</type>
</city>
</location>
lxml & Python
from lxml import etree as ET
parser = ET.XMLParser(recover=True)
tree = ET.fromstring(xml_data,parser)
print(tree.xpath('//city//name/text() | //city//type/text()'))
Der obige Code funktioniert mit, aber ich möchte ein geschachtelte Array-Beschreibung als [['New York','non-capital'],['London','capital']]
Was wäre die genaue xpath Abfrage/Kombination von Abfragen/Schleifen, um das oben genannte zu erhalten?
'[[c.text für c in n] für n in tree.xpath ('// city')] 'funktioniert gut, was macht c.tail? – wolfgang
Es ist nur meine Gewohnheit, die ich habe, aber in Ihrem Fall nicht benötigt. Lxml kann normalen Text und so genannten Tail-Text haben. Mehr [hier] (http://lxml.de/tutorial.html) – Marcin
Behalten Sie diesen Fehler-ValueError: Unicode-Strings mit Encoding-Deklaration werden nicht unterstützt. Bitte verwenden Sie eine Byte-Eingabe oder XML-Fragmente ohne Deklaration. –