Etree可以处理这些类型的XPath查询

时间:2013-04-15 05:02:25

标签: python xml-parsing elementtree

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 Parsing库,因为我只是想在构建的XML Parsing库中使用Pythons进行一些简单的单元测试。是否有其他本机Python库可以处理此XPath查询?

1 个答案:

答案 0 :(得分:1)

ElementTree不支持问题中使用的XPath表达式。请参阅http://docs.python.org/2/library/xml.etree.elementtree.html#xpath-support

要声明文本内容Key存在USER_4D元素,您可以使用以下内容:

Key = root.find("Group/EnvConfig/Overrides/Override/Key")
assert Key != None             # Element exists
assert Key.text == "USER_4D"   # Element has specific content