2009-11-16 8 views
5

Lorsque je crée un document à l'aide de la commande minidom, les attributs sont triés par ordre alphabétique dans l'élément. Prenez cet exemple de here:Les attributs XML sont triés

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() 

Le résultat est le suivant:

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

Ce qui est très bien si vous vouliez les attributs e-mail/nom/pseudo/ordre de photo au lieu du nom/pseudo/email/photo ordre comme ils ont été créés.

Comment obtenez-vous les attributs à apparaître dans l'ordre où vous les avez créés? Ou, comment contrôlez-vous l'ordre du tout?

+2

Pourquoi voulez-vous cela? Les attributs en XML n'ont par définition aucun ordre (contrairement aux éléments). Est-ce juste pour l'embellissement? – Boldewyn

+0

Si j'ai un XSD qui spécifie les attributs dans l'ordre C-B-A et que je ne peux les écrire que dans l'ordre A-B-C, suis-je en train de satisfaire le XSD? – hughdbrown

Répondre

5

Selon le documentation, l'ordre des attributs est arbitraire mais cohérent pour la durée de vie du DOM. Ceci est commun à travers les implémentations DOM. Pardon.

Questions connexes