python遍历xml所有节点_使用python获取xml节点的所有父节点

对于这个xml

124

A

type a

Active

125

B

type b

Active

126

C

type c

Active

109449

D

type d

Active

我如何在python中使用lxml etree获取节点的所有父节点.

预期输出:输入orgid = 126,它将返回所有父母,如,

{'A':124,'B':125,'C':126}

解决方法:

使用lxml和XPath:

>>> s = '''

...

...

... 124

... A

... type a

... Active

...

... 125

... B

... type b

... Active

...

... 126

... C

... type c

... Active

...

...

...

...

... 109449

... D

... type d

... Active

...

...

... '''

使用祖先或自我轴,您可以找到节点本身,父,祖父母,…

>>> import lxml.etree as ET

>>> root = ET.fromstring(s)

>>> for target in root.xpath('.//Department/orgID[text()="126"]'):

... d = {

... dept.find('name').text: int(dept.find('orgID').text)

... for dept in target.xpath('ancestor-or-self::Department')

... }

... print(d)

...

{'A': 124, 'C': 126, 'B': 125}

标签:python,xml-parsing,python-2-7,xml,xml-etree

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值