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

for this xml

124

A

type a

Active

125

B

type b

Active

126

C

type c

Active

109449

D

type d

Active

How i can get all parents of a node using lxml etree in python.

Expected output : Input orgid=126 , it will return all the parents like ,

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

解决方案

Using lxml and XPath:

>>> s = '''

...

...

... 124

... A

... type a

... Active

...

... 125

... B

... type b

... Active

...

... 126

... C

... type c

... Active

...

...

...

...

... 109449

... D

... type d

... Active

...

...

... '''

Using ancestor-or-self axis, you can find the node itself, parent, grandparent, ...

>>> 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}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值