open library example etree dict create python celementtree

python - library - ¿Cómo recuperar el nodo primario usando cElementTree?



xml python 3 (3)

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

para el xml

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

Necesito la lista que contiene tuplas de padres, datos para cada padre en xml.

¿Hay alguna manera de hacerlo utilizando el árbol de control? Puedo hacerlo para niños, datos, pero lamentablemente el niño es idéntico en todos los valores, por lo tanto, no sirve de mucho.


Parece que puede obtener acceso al padre del niño que usa la versión 1.3 de ElementTree (consulte http://effbot.org/zone/element-xpath.htm ), usando comandos xpath como child.find(''../parent'') . Pero creo que Python se envía con la versión 1.2 o algo así.

También debe verificar si lxml es compatible con etree y si tiene soporte completo de Xpath http://lxml.de/


Esta sintaxis parece funcionar para cElementTree

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

No va a la base principal, y usa una barra doble y una barra en la ruta.
(Se habría publicado como un comentario en el hilo anterior, pero parece que no tengo ningún privilegio)