Ich habe diese vereinfachen xml mit vielen A
Elementen:Python XPath: Daten vergleichen
<root>
<A class="a" version="7">
<details>
<dates>
<status date="2013-04-29T04:16:49.792-04:00">ACCEPTED</status>
<status date="2013-08-12T04:08:23.773-04:00">ACCEPTED</status>
</dates>
</details>
</A>
<A class="a" version="7">
...
</root>
Wie erhalte ich nur die A
Elemente, dass das letzte Statusdatum größer als ein bestimmte Zeitpunkt ist lxml XPath .
Was ich bisher getan habe:
from lxml import etree
tree = etree.parse("./my.xml")
root = tree.getroot()
res = root.xpath("A[./details/dates/status[last()]/@date > '2013-08-12T00:00:0.000-04:00' ]");
Aber das Problem mit diesem Code ist, dass der Vergleich liefert immer falsch aus irgendeinem Grunde, so die res
ist immer leer.
Jede Hilfe oder Beratung wird geschätzt.
Ich fürchte, das wird nicht funktionieren, wie erwartet, weil Off-Nummer Darstellung in Xpath/lxml (ass Fließkomma). Dies wird "2.01308120408e + 20" sein. Daher muss es ein komplexerer xapth sein (zum Beispiel das Vergleichen des Datums "substring-before (..., 'T')" und als die Zeit. –