首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lxml xpath的语法问题

lxml xpath的语法问题
EN

Stack Overflow用户
提问于 2014-07-03 22:10:47
回答 1查看 536关注 0票数 2

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

当我这么做时:

代码语言:javascript
复制
print self.root.xpath("descendant::*[@Name='GevCCP']/*",namespaces=self.nsmap)

我得到了一个从属节点列表:

代码语言:javascript
复制
[<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>]

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

我试过:

代码语言:javascript
复制
print self.root.xpath("descendant::*[@Name='GevCCP']/ToolTip",namespaces=self.nsmap)

这给了我一套空的:

代码语言:javascript
复制
[]

我还尝试在xpath中指定名称空间,这必然会导致lxml.etree.XPathEvalError: Invalid expression错误。

最后,我想在各种元素上这样做,例如:

代码语言:javascript
复制
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和命名空间的其他内容似乎都不完整。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-03 22:30:20

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

代码语言:javascript
复制
self.nsmap = {'g': 'http://www.genicam.org/GenApi/Version_1_0'}

然后使用前缀对XPath选择器进行限定:

代码语言:javascript
复制
self.root.xpath("descendant::*[@Name='GevCCP']/g:ToolTip", namespaces=self.nsmap)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24564020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档