如何在python上找到lxml具有不同属性的元素?
例如
<Form>
<Subform ind="0">
<Check ind="0">0</Check>
<Check ind="1">1</Check>
<Check ind="2">2</Check>
<Check ind="3">3</Check>
</Subform>
</Form>
检索我做的支票:
tree.findall("./Form/Subform/Check")
得到第一个:
tree.findall("./Form/Subform/Check[@ind='0']")
但我想做的就像是
tree.findall("./Form/Subform/Check[@ind='0' or @ind='1']")
检索第一个和第二个(或第一个和最后一个)
我怎么能用lxml做到这一点?
答案 0 :(得分:1)
tree.findall("./Form/Subform/Check[@ind='0' or @ind='1']")
表达式有效,这将在lxml
xpath()
方法中有效。如果你想让它变得可扩展&#34;,你可以动态构建表达式:
values = ["0", "1"]
condition = " or ".join("@ind = '%s'" % value for value in values)
print(root.xpath("//Subform/Check[%s]" % condition))
答案 1 :(得分:1)
该表达式是正确的,但您需要使用提供完整XPath 1.0支持的xpath()
方法。 findall()
仅支持xml.etree.ElementTree
的有限XPath子集:
tree.xpath("/Form/Subform/Check[@ind='0' or @ind='1']")