猿问

访问ElementTree节点的父节点

我正在使用内置的Python ElementTree模块。访问子级很简单,但是父级或同级节点呢?-是否可以有效地完成而不遍历整个树?



慕神8447489
浏览 1411回答 3
3回答

呼如林

没有直接支持parent属性的形式,但是您可以使用此处描述的模式来实现所需的效果。建议使用以下一类代码(从链接到文章)为整个树创建子对象到父对象的映射:parent_map = dict((c, p) for p in tree.getiterator() for c in p)

PIPIONE

Vinay的答案应该仍然有效,但是对于Python 2.7+和3.2+,建议以下操作:parent_map = {c:p for p in tree.iter() for c in p}getiterator()不推荐使用iter(),而推荐使用新的dict列表理解构造函数。其次,在构造XML文档时,一个孩子可能会有多个父母,尽管一旦您序列化该文档,该父母就会被删除。如果那很重要,您可以尝试以下方法:parent_map = {}for p in tree.iter():    for c in p:        if c in parent_map:            parent_map[c].append(p)            # Or raise, if you don't want to allow this.        else:            parent_map[c] = [p]            # Or parent_map[c] = p if you don't want to allow this

喵喔喔

您可以...在ElementTree中使用xpath 表示法。<parent>&nbsp; &nbsp; &nbsp;<child id="123">data1</child></parent>xml.findall('.//child[@id="123"]...')>> [<Element 'parent'>]
随时随地看视频慕课网APP

相关分类

Python
我要回答