【发布时间】:2015-10-18 16:12:28
【问题描述】:
我有一个 XML 文档,我想从中提取特定节点 (mynode) 的绝对路径以供以后使用。我这样检索节点:
from StringIO import StringIO
from lxml import etree
xml = """
<a1>
<b1>
<c1>content1</c1>
</b1>
<b1>
<c1>content2</c1>
</b1>
</a1>"""
root = etree.fromstring(xml)
i = 0
mynode = root.xpath('//c1')[i]
为了得到我当前使用的路径
ancestors = mynode.xpath('./ancestor::*')
p = ''.join( map( lambda x: '/' + x.tag , ancestors ) + [ '/' , mynode.tag ] )
p 现在有了值
/a1/b1/c1
但是,为了存储路径以供以后使用,我还必须存储第一个代码 sn-p 中的索引 i,以便检索正确的节点,因为对 p 的 xpath 查询将包含两个节点 c1。我不想存储那个索引。
最好是包含索引的 xquery 路径。对于第一个 c1 节点,它可能如下所示:
/a1/b1[1]/c1
或者这个用于第二个 c1 节点
/a1/b1[2]/c1
有人知道如何实现这一点吗? 是否有另一种方法来指定节点并稍后访问它?
【问题讨论】:
标签: python xml xpath xquery lxml