lxml:元素上的XPath和名称空间

sk

我在使用返回结果为空列表的XPath查询时遇到麻烦。

更具体地说,XML文档类似于:

<rpc-reply xmlns:junos="http://xml.juniper.net/junos/15.1X22/junos">
    <isis-database-information xmlns="http://xml.juniper.net/junos/15.1X22/junos-routing" junos:style="detail">
        <isis-database>
            <level>1</level>
            <isis-database-entry>
                <lsp-id>xxx.00-00</lsp-id>
                <sequence-number>0xc2d6</sequence-number>
                <checksum>0xe1d1</checksum>
            </isis-database-entry>
        </isis-database>
        <isis-database>
            <level>2</level>
            <isis-database-entry>
                <lsp-id>yyy.00-00</lsp-id>
                <sequence-number>0x419e</sequence-number>
                <checksum>0x1f24</checksum>
            </isis-database-entry>
        </isis-database>
    </isis-database-information>
    <cli>
        <banner>{master}</banner>
    </cli>
</rpc-reply>

这是我所做的查询,也是基于堆栈溢出中的相关问题,

In [71]: docs = etree.fromstring(xxx)                                                                                                                 

In [72]: docs                                                                                                                                         
Out[72]: <Element rpc-reply at 0x7fc2e4c5eac8>

In [73]: docs.xpath("//isis-database-information/isis-database[level='2']/isis-database-entry")                                                       
Out[73]: []

In [74]: docs[0]                                                                                                                                      
Out[74]: <Element {http://xml.juniper.net/junos/15.1X22/junos-routing}isis-database-information at 0x7fc2e5876288>

In [76]: docs.xpath("//j:isis-database-information/j:isis-database[level='2']/j:isis-database-entry", namespaces={"j": "http://xml.juniper.net/junos/1
    ...: 5.1X22/junos-routing"})                                                                                                                      
Out[76]: []

我不明白命名空间和Path如何一起玩。您能告诉我我在做什么错吗?

丹尼尔·海利

似乎您只是缺少...j前缀level

//j:isis-database-information/j:isis-database[j:level='2']/j:isis-database-entry

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

由于名称空间为空,Python XPath lxml无法读取SVG路径元素?

使用lxml和Xpath刮取元素

LXML名称空间前缀

默认的XML名称空间,JDOM和XPath

XPath和Powershell-默认名称空间

使用Python / lxml和XPath检索属性名称和值

在python lxml中设置和访问名称空间

使用名称空间和Python(lxml)从XML获取XML属性

子元素上的XML名称空间

Jaxb和内部元素的名称空间

具有名称空间的xpath查询根元素

在lxml中使用名称空间

查找lxml的名称空间URI

带xpath的python etree和带前缀的名称空间

使用Java中的XPath和名称空间解析XML

具有显式默认名称空间的XML文档的XPath和名称空间规范

解析包含默认名称空间的xml以使用lxml获取元素值

PHP DOMDocument在错误的元素上生成名称空间声明

如何在Schematron中组合名称空间和元素的路径?

对具有不同名称空间元素的单个根元素进行Xpath验证

使用 lxml 和 xpath 解析

在JavaScript中,将类名称分配给常规元素和名称空间元素是否不同?

Xpath获取元素名称

F#名称空间和模块:Wikibooks上的绝妙集合

Instanceof和名称空间

如何使用python获取具有默认名称空间的xml文件中所有元素的xpath?

如何在 PHP Xpath 中获取带有命名空间前缀的元素名称

是否需要在根元素中声明XML名称空间,以便XPath查询可以匹配它?

如何使用XPath根据条件获取XML containsg默认名称空间中的特定元素