es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se inserta una etiqueta lxml con espacio de nombres sin incluir xmlns?

Estoy tratando de escribir mis scripts de Python usando python-docx para agregar ecuaciones a archivos docx. Dado que esto aún no es compatible con python-docx, necesito modificar directamente el OOXML utilizando lxml. Necesitaría agregar algunas etiquetas para que el XML resultante se vea así:


<m:r>
<m:t>(5−x)</m:t>
</m:r>

No puedo crear un nuevo nodo
<m:r> vacío utilizando lxml. El siguiente código por ejemplo:


new_node = etree.Element('{m}r', nsmap={'m': ''})

me devuelve un nodo
<m:r xmlns:m="m">, excepto que no necesito la parte xmlns. (python-docx se encarga de las demás operaciones XML por mí, y si está presente el xmlns, en realidad el archivo docx no sería reconocido por MS Word.) ¿Existe alguna manera de hacer un nodo
<m:r> vacío?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para crear un nodo <m:r> vacío utilizando lxml, puedes intentar usar una cadena vacía como parámetro de espacio de nombres al crear el elemento, de la siguiente manera:

    new_node = etree.Element('m:r', nsmap={None: ''})
    

    Esto te dará un nodo <m:r> sin ningún atributo xmlns. Luego puedes agregar los elementos hijos requeridos a este nodo utilizando el método append.

Comments are closed.