0

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

4

1 回答 1

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
于 2013-04-16T05:19:38.050 回答