繁体   English   中英

使用字符串值搜索 lxml xpath 元素的奇怪结果

[英]Strange results of lxml xpath element search using string-value

无法理解以下 xpath 查询的结果:

from lxml import etree
from io import StringIO
s = '<aaa><bbb>f<ccc>e</ccc>d</bbb></aaa>'
tree = etree.parse(StringIO(s))
print(tree.xpath('//bbb[.="fed"]')) #prints an empty list!

根据 XPath 规范,

元素节点的字符串值是元素节点的所有文本节点后代的字符串值按文档顺序的串联。

所以我希望得到bbb元素。

更令人困惑的是,以下每个查询都返回bbb

tree.xpath('//bbb[contains(.,"fed")]')
tree.xpath('//bbb[normalize-space(.)="fed"]')
tree.xpath('//bbb[string-length(.)=3]')

我哪里错了? 或者它是lxml中的错误?

//bbb[.="fed“]的XPath意味着你期待其具有作为供给文本BBB标签

验证您的 xpath 是否正确或不从同一个 xpath 返回多个值。

如果您希望我们为您创建 XPath,请发布您的 DOM/链接

希望它会帮助你:)

原来是个bug。 现在已修复(已检查 lxml v. 4.5.1)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM