XmlElement有一个“Order”属性,您可以使用该属性在使用XmlSerializer进行序列化时指定属性的精确顺序(无论如何相互关联)。
XmlAttribute是否有类似的东西?我只想设置属性的顺序,如
<MyType end="bob" start="joe" />
到
<MyType start="joe" end="bob" />
这只是为了可读性,我自己的利益。
答案 0 :(得分:9)
您没有,因为属性在XML中没有顺序(XML建议的第3.1节说:“请注意,start-tag或empty-element标记中的属性规范的顺序并不重要。”)。< / p>
答案 1 :(得分:8)
根据我的经验,属性序列化的顺序与您定义公共属性的顺序相同。但是,如果将属性与同一类中的字段组合在一起,例如
[Serializable()]
public class MyClass
{
[XmlAttribute("ADoubleProp")]
public double ADoubleProp { get; set; }
[XmlAttribute("AnIntField")]
public int AnIntField = 42;
}
然后字段将第一个作为属性写入,然后是属性。上面的代码会生成类似这样的内容
<MyClass AnIntField="42" ADoubleProp="0" />
答案 2 :(得分:1)
在C#中,就我所发现的而言,属性的顺序按照它们在类中定义的顺序被序列化。
请在此处查看我对此问题的回答:https://stackoverflow.com/a/21468092/607117
答案 3 :(得分:0)
如果要动态创建XML,请尝试更改将属性附加到节点的顺序,它应该可以工作:)
答案 4 :(得分:0)
xmlNode.Attributes.InsertAfter(newAttribute, refAttribute);
xmlNode.Attributes.InsertBefore(newAttribute, refAttribute);