2009-11-16 25 views
5

Cuando creo un documento con el minidomo, los atributos se ordenan alfabéticamente en el elemento. Tome este ejemplo de here:Los atributos XML se ordenan

from xml.dom import minidom 

# New document 
xml = minidom.Document() 

# Creates user element 
userElem = xml.createElement("user") 

# Set attributes to user element 
userElem.setAttribute("name", "Sergio Oliveira") 
userElem.setAttribute("nickname", "seocam") 
userElem.setAttribute("email", "[email protected]") 
userElem.setAttribute("photo","seocam.png") 

# Append user element in xml document 
xml.appendChild(userElem) 

# Print the xml code 
print xml.toprettyxml() 

El resultado es este:

<?xml version="1.0" ?> 
<user email="[email protected]" name="Sergio Oliveira" nickname="seocam" photo="seocam.png"/> 

cual está muy bien si quería los atributos de correo electrónico nombre apodo orden de las fotos///en lugar del nombre/apodo/orden de correo electrónico/foto a medida que fueron creados.

¿Cómo se obtienen los atributos en el orden en que los creó? O, ¿cómo controlas el orden en absoluto?

+2

¿Por qué quieres esto? Los atributos en XML no tienen orden por definición (a diferencia de los elementos). ¿Es solo para el embellecimiento? – Boldewyn

+0

Si tengo un XSD que especifica los atributos en orden C-B-A y puedo escribirlos solo en orden A-B-C, ¿estoy satisfaciendo el XSD? – hughdbrown

Respuesta

5

De acuerdo con documentation, el orden de los atributos es arbitrario pero coherente durante la vida del DOM. Esto es común en todas las implementaciones DOM. Lo siento.

Cuestiones relacionadas