0

Pythons XML 解析ライブラリEtreeは、次のような複雑な XPath クエリを使用できますか?

# Note the "[text()=\"USER_4D\"]"
assert root.find("Group/EnvConfig/Overrides/Override/Key[text()=\"USER_4D\"]") != None

SyntaxError: invalid predicate上記の行でエラーが発生しています。「述語」を削除すると、[text()=\"USER_4D\"]期待/エラーは発生しません。

このエラーの原因は何ですか? XPath の形式が正しくありませんか、それとも Etree でこれらの種類の XPath クエリを実行できませんか? これを修正する方法についてアドバイスをいただけますか?

ビルドされた XML 解析ライブラリで Python を使用して単純な単体テストを作成しようとしているだけなので、カスタム XML 解析ライブラリを使用する必要がないことを願っています。この XPath クエリを処理できるネイティブ Python ライブラリは他にありますか?

4

1 に答える 1

1

ElementTree は、質問で使用されている種類の XPath 式をサポートしていません。http://docs.python.org/2/library/xml.etree.elementtree.html#xpath-supportを参照してください。

Keyテキスト content を持つ要素の存在をアサートするには、次のUSER_4Dようなものを使用できます。

Key = root.find("Group/EnvConfig/Overrides/Override/Key")
assert Key != None             # Element exists
assert Key.text == "USER_4D"   # Element has specific content
于 2013-04-16T05:19:38.050 に答える