我在使用返回结果为空列表的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] 删除。
我来说两句