[Python-es] Problema al parsear un xml

Luis Miguel Morillas morillas en gmail.com
Lun Mar 24 20:01:02 CET 2014


El orden de los atributos no es significativo en la definición de XML
y los parsers no lo tienen en cuenta. Eso genera distintas
representaciones físicas de un mismo XML. Si es necesario el orden,
tendrás que mirar algo de c14n [1] y usar un parser que la soporte.


[1] http://www.w3.org/TR/xml-c14n11/


Saludos,

-- luismiguel  (@lmorillas)


El día 24 de marzo de 2014, 5:08, Pavel Stephan Muñoz
<minibota en gmail.com> escribió:
> Buenas noches,
>
> Creo que lo que ocurre aquí es que a momento de hacer minidom.parse(...) toda
> la information dentro de las etiquetas y atributos del xml queda en memoria;
> en ese momento ya se puede olvidar del documento xml original, usted puede
> trabajar con todo lo que ya esta en memoria en su variable 'dial'. Cuando
> hace dial.toxml(), se generará un xml nuevo a partir de esa memoria y es
> posible que los atributos se estén imprimiendo simplemente en orden
> alfabético; el xml original no importa aquí, es un xml totalmente nuevo,
> aunque con toda la misma información.
>
> El orden de los atributos no le afecta en nada. No es necesario preocuparse
> por ese detalle.
>
> Saludos.
> --
> Pavel Stephan Muñoz
>
> En 21 de marzo de 2014 at 20:51:10, FERNANDO VILLARROEL
> (fvillarroel en yahoo.com) escrito:
>
> Hola.
>
> Tengo un documento xml con la siguiente estructura:
>
> <?xml version="1.0" ?>
> <include>
>   <context name="default">
>     <extension name="unloop">
>       <condition expression="^true$" field="${unroll_loops}"/>
>       <condition expression="^true$" field="${sip_looped_call}">
>         <action application="deflect" data="${destination_number}"/>
>       </condition>
>     </extension>
>   </context>
> </include>
>
> Pero cuando lo parseo con xml.etree.ElementTree o con minidom me cambia la
> estructura y me muestra la siguiente salida:
>
> <?xml version="1.0" ?>
> <include>
>   <context name="default">
>
>     <extension name="unloop">
>       <condition expression="^true$" field="${unroll_loops}"/>
>       <condition expression="^true$" field="${sip_looped_call}">
>         <action application="deflect" data="${destination_number}"/>
>       </condition>
>     </extension>
>   </context>
> </include>
>
> Si se fijan en los tags <condition> me invierte el orden de los atributos
> field y expression. Por que ocurre eso o estoy haciendo algo mal.
>
> El programa que estoy probando esta asi:
>
> from xml.dom import minidom
> dial = minidom.parse('default.xml')
> print dial.toxml()
>
> Espero me puedan ayudar con esto.
>
> Saludos.
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>


Más información sobre la lista de distribución Python-es