XML属性得到排序

问题描述:

当我使用minidom创建文档时,属性在元素中按字母顺序排序。从here拿这个例子:XML属性得到排序

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

结果是这样的:

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

这都非常好,如果你想在电子邮件/名/昵称/照片顺序,而不是名称/昵称的属性/电子邮件/照片订单,因为它们被创建。

如何获得按照创建顺序显示的属性?或者,你如何控制订单?

+2

你为什么要这样? XML中的属性根据定义没有顺序(与元素相反)。这只是为了美化吗? – Boldewyn 2009-11-16 08:03:47

+0

如果我有一个XSD按顺序指定C-B-A的属性,并且我只能按照A-B-C的顺序对它们进行描述,我是否满足XSD? – hughdbrown 2009-11-16 13:39:02

根据documentation,属性的顺序是任意的,但是对于DOM的生命周期是一致的。这在DOM实现中很常见。抱歉。