使用 lxml.etree 从 n-1 个节点获取值
Get the value from the n-1 node with lxml.etree
我有这个etree:
<root>
<test>
<criteria nom="DR">
<abbr>DR</abbr>
<value>0.123456</value>
</criteria>
<criteria nom="MOTA">
<abbr>MOTA</abbr>
<value>0.132465</value>
</criteria>
<criteria nom="PFR">
<abbr>PFR</abbr>
<value>0.914375</value>
</criteria>
</test>
<test>
<criteria nom="DR">
<abbr>DR</abbr>
<value>0.655425</value>
</criteria>
<criteria nom="MOTA">
<abbr>MOTA</abbr>
<value>0.766545</value>
</criteria>
<criteria nom="PFR">
<abbr>PFR</abbr>
<value>0.943154</value>
</criteria>
</test>
</root>
我需要一个一个地获取值
0.655425
0.766545
0.943154
能够将它们与值“0.25”进行比较。
--编辑--
我已经尝试通过像这样在主树中循环来获取值:
tree = etree.fromstring(the tree above)
root = tree.getroot()
for test in root.findall("test"):
for criteria in test.findall(criteria):
value = criteria.findall("value").text()
但这不起作用。
使用xml模块。并使用 enumerate
.
Ex
import xml.etree.ElementTree as ET
tree = ET.fromstring(s)
for i, content in enumerate(tree.findall(".//test")):
if i % 2 != 0:
for val in content.findall("criteria/value"):
print(val.text)
输出:
0.655425
0.766545
0.943154
from lxml import etree
tree = etree.parse(open("so.xml"))
for value in tree.xpath("/root/test[2]/criteria/value"):
print(value.text)
我有这个etree:
<root>
<test>
<criteria nom="DR">
<abbr>DR</abbr>
<value>0.123456</value>
</criteria>
<criteria nom="MOTA">
<abbr>MOTA</abbr>
<value>0.132465</value>
</criteria>
<criteria nom="PFR">
<abbr>PFR</abbr>
<value>0.914375</value>
</criteria>
</test>
<test>
<criteria nom="DR">
<abbr>DR</abbr>
<value>0.655425</value>
</criteria>
<criteria nom="MOTA">
<abbr>MOTA</abbr>
<value>0.766545</value>
</criteria>
<criteria nom="PFR">
<abbr>PFR</abbr>
<value>0.943154</value>
</criteria>
</test>
</root>
我需要一个一个地获取值
0.655425
0.766545
0.943154
能够将它们与值“0.25”进行比较。
--编辑--
我已经尝试通过像这样在主树中循环来获取值:
tree = etree.fromstring(the tree above)
root = tree.getroot()
for test in root.findall("test"):
for criteria in test.findall(criteria):
value = criteria.findall("value").text()
但这不起作用。
使用xml模块。并使用 enumerate
.
Ex
import xml.etree.ElementTree as ET
tree = ET.fromstring(s)
for i, content in enumerate(tree.findall(".//test")):
if i % 2 != 0:
for val in content.findall("criteria/value"):
print(val.text)
输出:
0.655425
0.766545
0.943154
from lxml import etree
tree = etree.parse(open("so.xml"))
for value in tree.xpath("/root/test[2]/criteria/value"):
print(value.text)