Me quedé atrapado con XML y Python. La tarea es simple, pero no pude resolverla hasta el momento y la pasé en ese largo tiempo. Vine aquí por un consejo sobre cómo resolverlo con un par de líneas.Cómo eliminar elementos de XML usando Python
Gracias por cualquier ayuda para atravesar el árbol. Siempre terminé con demasiados o muy pocos elementos. Los elementos se pueden anidar sin límite. El ejemplo dado es solo un ejemplo. Voy a aceptar cualquier solución, no exigente con dom, minidom, saxofón, cualquiera que sea ..
que tienen un archivo XML similar a éste:
<root>
<elm>
<elm>Common content</elm>
<elm xmlns="http://example.org/ns">
<elm lang="en">Content EN</elm>
<elm lang="cs">žluťoučký koníček</elm>
</elm>
<elm xml:id="abc123">Common content</elm>
<elm lang="en">Content EN</elm>
<elm lang="cs">Content CS</elm>
<elm lang="en">
<elm>Content EN</elm>
<elm>Content EN</elm>
</elm>
<elm lang="cs">
<elm>Content CS</elm>
<elm>Content CS</elm>
</elm>
</elm>
</root>
Lo que necesito - analizar el XML y escribir un nuevo archivo. El nuevo archivo debe contener todos los elementos para el lenguaje y los elementos dados sin el atributo lang
.
Para el idioma "CS" el archivo de salida debe containt esto:
<root>
<elm>
<elm>Common content</elm>
<elm xmlns="http://example.org/ns">
<elm lang="cs">žluťoučký koníček</elm>
</elm>
<elm xml:id="abc123">Common content</elm>
<elm lang="cs">Content CS</elm>
<elm lang="cs">
<elm>Content CS</elm>
<elm>Content CS</elm>
</elm>
</elm>
</root>
Si usted puede hacer que omitir el atributo lang
en el nuevo archivo, aún mejor. Pero no es tan importante.
ACTUALIZACIÓN1: Se agregaron caracteres unicode y el atributo de espacio de nombres.
UPDATE2: Utilizando Python 2.5, se prefieren las bibliotecas estándar.
'Para el idioma" en ", el archivo de salida debe contener esto:' ¿Supongo que quiso decir que la salida dada es para el lenguaje "cs"? – LarsH
@LarsH: Actualicé la pregunta para agregar algunos caracteres Unicode allí. Tienes razón, debe haber escrito: para el lenguaje "cs". Lo cambiará – dwich