如何使用cElementTree检索父节点?

时间:2008-12-17 11:11:34

标签: python celementtree

表示xml

<grandparent>
  <parent1>
     <child>data1</child>
  </parent1>
  <parent2>
     <child>data2</child>
  </parent2>
</grandparent>

我需要包含父元组的列表,xml中每个父元素的数据。

有没有办法使用cElementTree?我能够为孩子,数据做这件事,但不幸的是孩子在所有的价值观上是相同的,因此没有多大用处。

3 个答案:

答案 0 :(得分:5)

parent_map = dict((c, p) for p in tree.getiterator() for c in p)
parent_map[el].remove(el)

答案 1 :(得分:4)

似乎您可以使用像child.find('../parent')这样的xpath命令,使用ElementTree的1.3版(检查http://effbot.org/zone/element-xpath.htm)来访问子项中的父项。但是我觉得python的版本是1.2或者什么。

您还应该检查与etree兼容并且具有完整Xpath支持的lxml http://lxml.de/

答案 2 :(得分:0)

此语法似乎适用于cElementTree

ET.fromstring("<c><a><b></b></a></c>").find('.//b/..')

不要使用基本父级,并使用双斜杠然后在路径中使用单斜杠 (会在上面的帖子中发表评论,但似乎我没有特权)