Python 如何使用cElementTree检索父节点?

Python 如何使用cElementTree检索父节点?,python,celementtree,Python,Celementtree,对于xml <grandparent> <parent1> <child>data1</child> </parent1> <parent2> <child>data2</child> </parent2> </grandparent> 数据1 数据2 我需要包含父元素元组的列表,每个父元素的xml数据 有没有一种使用cElementT

对于xml

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

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


有没有一种使用cElementTree的方法?我可以为child、data执行此操作,但不幸的是child在所有值中都是相同的,因此它没有多大用处。

似乎您可以使用ElementTree(check)的1.3版,通过使用诸如
child.find('../parent')之类的xpath命令从子级访问父级。
。但我认为python附带了1.2版或其他版本


您还应该检查lxml,它与etree兼容,并具有完整的Xpath支持

此语法似乎适用于cElementTree

ET.fromstring("<c><a><b></b></a></c>").find('.//b/..')
ET.fromstring(“”).find('.//b/。)
不去基父级,在路径中使用双斜杠,然后使用单斜杠。

(可能会作为评论发布到上面的线程,但我似乎没有特权)

文档说在版本2.7中有类似于
的更改:ElementTree API更新为1.3。
在我使用的是2.7,但对我来说,
“../myparent”
似乎仍然不起作用;这是什么意思?是的,我不认为这是cElementTree中的支持。e、 例如:ET.fromstring(“”).find('.//b').find('..')返回None@AndySmith我想我知道为什么它没有返回。:
选择父元素。如果路径试图到达起始元素(**在**上调用了元素find),则返回None。
+1。因为在elementTree中,通过
访问父级被破坏或无法工作,或者以任何其他我不知道的方式。所以您的方式将解决它!!!我们也可以用
{c:p代表tree中的p.getiterator()代表p}
@namit我可以确认这一点。我可以正确地访问我的节点,但当我打印('parent=',el.findall(../”)时,我得到了空对象。@但事实证明我没有正确阅读
的文档。
选择父元素。如果路径试图到达起始元素的祖先(调用了元素find),则返回None。
ET.fromstring("<c><a><b></b></a></c>").find('.//b/..')