2016-03-29 19 views
1

pythonでlxmlと異なる属性の要素を見つけるにはどうすればよいですか?最初を取得するためにリスト内の属性を持つ要素を検索するにはどうすればよいですか?

tree.findall("./Form/Subform/Check") 

::私は小切手を取得するために、例えば

<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[@ind='0']") 

が、私は何をしたい

のようなものです
tree.findall("./Form/Subform/Check[@ind='0' or @ind='1']") 

lxmlでどうすればいいですか?

+1

が、これはその質問の重複だったとは思わない - それは、XPath質問VSだけのfindAllです。 – alecxe

答えて

1

式が正しいですが、あなたは完全なXPath 1.0のサポートを提供xpath()メソッドを使用する必要があること:あなたは、それは「スケーラブル」にしたい場合は、動的に表現を構築することができます。 findall()xml.etree.ElementTreeとしてのXPathの限られたサブセットをサポートしています:

tree.xpath("/Form/Subform/Check[@ind='0' or @ind='1']") 
+0

ありがとうございました – maazza

1

tree.findall("./Form/Subform/Check[@ind='0' or @ind='1']")

式は有効であり、これはxpath()方法でlxmlで動作します。

values = ["0", "1"] 
condition = " or ".join("@ind = '%s'" % value for value in values) 
print(root.xpath("//Subform/Check[%s]" % condition)) 
関連する問題