9

对于 xml

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

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

有没有办法使用 cElementTree 做到这一点?我可以为孩子、数据做这件事,但不幸的是孩子在所有值上都是相同的,因此它没有多大用处。

4

3 回答 3

6

看来您可以使用 ElementTree 1.3 版(检查http://effbot.org/zone/element-xpath.htm)从子级访问父级,通过使用 xpath 命令,如 child.find('../parent'). 但我认为 python 附带 1.2 版或其他版本。

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

于 2008-12-17T13:46:40.533 回答
5
parent_map = dict((c, p) for p in tree.getiterator() for c in p)
parent_map[el].remove(el)
于 2012-09-21T15:39:38.090 回答
0

这种语法似乎适用于 cElementTree

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

不去基父,并在路径中使用双斜杠然后单斜杠。
(会作为评论发布到上述线程,但似乎我没有特权)

于 2016-07-05T19:20:56.740 回答