lxml xpath的语法问题

章鱼

我在使用lxml解析Python中的XML时难以理解用于获取单个元素的正确语法。

当我这样做时:

print self.root.xpath("descendant::*[@Name='GevCCP']/*",namespaces=self.nsmap)

我得到下级节点的列表:

[<Element {http://www.genicam.org/GenApi/Version_1_0}ToolTip at 0x1175830>, <Element {http://www.genicam.org/GenApi/Version_1_0}Description at 0x117b6c8>, <Element {http://www.genicam.org/GenApi/Version_1_0}DisplayName at 0x117bb48>, <Element {http://www.genicam.org/GenApi/Version_1_0}Visibility at 0x117bb90>, <Element {http://www.genicam.org/GenApi/Version_1_0}Streamable at 0x117bd88>, <Element {http://www.genicam.org/GenApi/Version_1_0}EnumEntry at 0x117b8c0>, <Element {http://www.genicam.org/GenApi/Version_1_0}EnumEntry at 0x1214878>, <Element {http://www.genicam.org/GenApi/Version_1_0}EnumEntry at 0x1214560>, <Element {http://www.genicam.org/GenApi/Version_1_0}pValue at 0x1214a70>]

那么,如何直接使用xpath语法访问该列表的第一个子元素呢?

我试过了:

print self.root.xpath("descendant::*[@Name='GevCCP']/ToolTip",namespaces=self.nsmap)

这给了我一个空集:

[]

我也尝试过在xpath中指定名称空间,这总是会导致lxml.etree.XPathEvalError: Invalid expression错误。

最终,我想对各种元素执行此操作,例如:

self.root.xpath("descendant::*[@Name='GevCCP']/pValue")
self.root.xpath("descendant::*[@Name='GevCCP']/EnumEntry[@Name='Group']/Value")
self.root.xpath("descendant::*[@Name='GevHeartbeatTimeoutReg']/Address")

lxml文档似乎没有涵盖我的用例,而我发现的关于xpath和名称空间的任何其他内容似乎都不完整。

明亮的达罗查

最好的解决方案是注册XML源中使用的名称空间。通常,这是通过将其分配给您可以在表达式中使用前缀完成的您的nsmap变量是否正确映射了名称空间?选择一个前缀(g例如):

self.nsmap = {'g': 'http://www.genicam.org/GenApi/Version_1_0'}

然后使用前缀来限定您的XPath选择器:

self.root.xpath("descendant::*[@Name='GevCCP']/g:ToolTip", namespaces=self.nsmap)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

lxml xpath的语法问题

来自分类Dev

通过xpath用lxml解析html的问题

来自分类Dev

Python-表单的xpath语法(lxml.html)

来自分类Dev

python中在XML文件上使用lxml的xpath问题

来自分类Dev

lxml xpath不会忽略“&nbsp;”

来自分类Dev

lxml xpath不起作用

来自分类Dev

Python,如何使用lxml XPath?

来自分类Dev

lxml xpath不会忽略“&nbsp;”

来自分类Dev

lxml xpath不起作用

来自分类Dev

使用 lxml 和 xpath 解析

来自分类Dev

python-使用带有xpath语法的lxml.html解析html表单

来自分类Dev

python lxml并请求语法错误

来自分类Dev

强制xpath返回字符串lxml

来自分类Dev

文本提取中的分词系统,Lxml Xpath

来自分类Dev

lxml-如何获取HtmlElement的xpath?

来自分类Dev

如何从Selenium Webelement或lxml获取XPath?

来自分类Dev

用lxml / xpath解析html元素

来自分类Dev

合并xpath生成的列表,Python,lxml

来自分类Dev

lxml xpath找不到锚文本

来自分类Dev

python lxml xpath没有输出

来自分类Dev

Python LXML xpath无法正常工作

来自分类Dev

python lxml xpath无法解析撇号

来自分类Dev

通过LXML通过XPATH查找元素-Python

来自分类Dev

lxml xpath-找不到正文标签

来自分类Dev

如何从Selenium Webelement或lxml获取XPath?

来自分类Dev

使用lxml生成特定行的XPath

来自分类Dev

使用lxml和Xpath刮取元素

来自分类Dev

lxml xpath RDF不起作用

来自分类Dev

使用lxml`.xpath()`和`for`的意外输出