是否可以在 Python 中使用 XPath 2.0 函数,如
starts-with()
、ends-with()
和 contains()
?我尝试使用 lxml
和 defusedxml
,但不幸的是它们不支持任何这些功能。
我知道我可以使用
substring()
或 matches()
来解决问题,但我的情况确实很复杂,所以处理更多可读的函数会更好。
有支持 XPath 2.0 规范的库吗?
saxonpy基于Saxon He并支持Xpath 2.0。 您可以查看 github 存储库中的一些示例来帮助您入门:
SaxonC 12.X 的 python 轮子是官方版本,您可以在这里找到:https://pypi.org/user/saxonica/
为此使用 elementpath 可能是最简单的,它支持内置的 xml.etree 模块和 lxml。
>>> import elementpath
>>> from xml.etree import ElementTree
>>> root = ElementTree.XML('<A><B1/><B2><C1/><C2/><C3/></B2></A>')
>>> elementpath.select(root, '/A/B2/*')
[<Element 'C1' at ...>, <Element 'C2' at ...>, <Element 'C3' at ...>]