【问题标题】:Can Etree handle these kinds of XPath QueriesEtree 可以处理这些类型的 XPath 查询吗
【发布时间】:2013-04-15 05:02:25
【问题描述】:

Pythons XML Parsing library 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 查询?

【问题讨论】:

    标签: python xml-parsing elementtree


    【解决方案1】:

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

    要使用文本内容 USER_4D 断言 Key 元素的存在,您可以使用如下内容:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多