Acceder a elementos anidados: Python Docx
Este es el XML extraído del documento de Word.
<w:r>
<w:rpr>
<w:rtl></w:rtl>
</w:rpr>
<w:fldchar w:fldchartype="begin">
<w:ffdata>
<w:name w:val="נפתח1"></w:name>
<w:enabled></w:enabled>
<w:calconexit w:val="0"></w:calconexit>
<w:ddlist>
<w:listentry w:val="A"></w:listentry>
<w:listentry w:val="B"></w:listentry>
<w:listentry w:val="C"></w:listentry>
<w:listentry w:val="D"></w:listentry>
<w:listentry w:val="E"></w:listentry>
</w:ddlist>
</w:ffdata>
</w:fldchar>
</w:r>
Estoy tratando de llegar a las secciones <w:ddlist>
, pero no puedo superar la sección <w:r>
.
Sé que es posible obtener el elemento de “run” de la siguiente manera:
run = doc.paragraphs[0].runs[0]
pero “runs” no tiene ningún atributo similar a una lista, así que estoy bastante perdido en cómo continuar. Cualquier ayuda será apreciada.
davy.ai
Para acceder a la sección
w:ddList
, deberás recorrer el árbol XML a partir del elementorun
. Aquí tienes una posible solución utilizando la bibliotecalxml
:El código anterior primero extrae el código XML de
run
, luego lo analiza en un objetoElement
delxml
. Luego se utiliza el métodoxpath()
para encontrar todos los elementosw:ddList
en el árbol. Observa el uso del argumentonamespaces
para manejar el espacio de nombres XML definido por el prefijow:
.Una vez que tienes el/los elementos
w:ddList
, puedes acceder a sus atributos e hijos utilizando la API del objetoElement
.