У меня есть этот упрощенный XML с большим количеством A
элементов:питон XPath: Сравнение даты
<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>
Как я могу получить только те A
элементы, дата последнего состояния больше определенной временной точке, используя LXML XPath ,
То, что я сделал до сих пор:
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' ]");
Но проблема с этим кодом является то, что сравнение всегда возвращает ложной по какой-то причине, так что res
всегда пуст.
Любая помощь или совет приветствуются.
Я боюсь, что это не сработает, как ожидалось, из-за отсутствия числа в xpath/lxml (очка с плавающей запятой). Это будет «2.01308120408e + 20.». Поэтому он должен быть более сложным xapth (например, сравнивать дату 'substring-before (..., 'T')' и время. –