gpt4 book ai didi

python - 处理不包含 XML 命名空间的 XPath 查询?

转载 作者:太空宇宙 更新时间:2023-11-03 18:13:32 25 4
gpt4 key购买 nike

用户输入相当复杂的XPath来查询数据库。他们只会使用一个固定的命名空间来进行查询。目前用户必须输入如下表达式:

//ns:tag1/ns:tag2 | //ns:tag3/ns:*[not(ns:tag2)]

但是这种语法很快就会变得过于复杂,并且需要更长的时间才能输入。对于不太熟悉 xpath 的用户来说,它也很容易出错。理想情况下,用户输入不带命名空间的 XPath --

//tag1/tag2 | //tag3/*[not(tag2)]

对他们来说容易多了!但不适合我。面对这样的表情我该怎么办?我确实知道需要插入的 namespace 。有没有办法在 Xpath 表达式中的适当位置自动插入 ns ?我正在使用 Python lxml。或者我可以设置默认命名空间吗?

请注意,*[local-name() = 'entry'] 在这里是不可能的!

编辑

在 python 中我正在调用

currentNode.xpath(query, {'ns':'http://myaddress.com/userns'})

其中currentNode是一个etree.Element

最佳答案

XPath 2.0 通过允许您指定应用于查询中所有无前缀元素名称的默认命名空间来解决此问题。不幸的是,XPath 2.0 对于 Python 用户来说并不容易使用。

另一种方法是在用户查询文档之前对其进行转换,以便它不使用任何命名空间。

关于python - 处理不包含 XML 命名空间的 XPath 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25418200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com