2009-09-08 103 views
3

有没有办法强制按照对象类中定义的相同方式排序从XML序列化生成的XML元素?强制XML元素与序列化时的类顺序匹配

class SerializableClass 
{ 
    [XmlElement("Element.1")] 
    public List<string> Element1 
    { 
     get { return _Element1; } 
     set { _Element1 = value; } 
    } 
    private List<string> _Element1; 
    [XmlElement("Element.2")] 
    public int Element2; 
    [XmlElement("Element.3")] 
    public List<string> Element3 
    { 
     get { return _Element3; } 
     set { _Element3= value; } 
    } 
    private List<string> _Element3; 
    [XmlElement("Element.4")] 
    public string Element4; 
    [XmlElement("Element.5")] 
    public bool Element5; 
} 

<Element.1>SomeValue 1</Element.1> 
<Element.1>SomeValue 2</Element.1> 
<Element.2>12</Element.2> 
<Element.3>SomeValue 1</Element.3> 
<Element.3>SomeValue 2</Element.3> 
<Element.4>SomeString</Element.4> 
<Element.5>true</Element.5> 

我需要的排序是因为外部确认的确切。

回答

4

您应该能够设置Order上的序列化属性:

public class SerializableClass 
{ 
    [XmlElement("Element.1", Order = 1)] 
    public List<string> Element1 
    { 
     get { return _Element1; } 
     set { _Element1 = value; } 
    } 
    private List<string> _Element1; 
    [XmlElement("Element.2", Order = 2)] 
    public int Element2; 
    [XmlElement("Element.3", Order = 3)] 
    public List<string> Element3 
    { 
     get { return _Element3; } 
     set { _Element3 = value; } 
    } 
    private List<string> _Element3; 
    [XmlElement("Element.4", Order = 4)] 
    public string Element4; 
    [XmlElement("Element.5", Order = 5)] 
    public bool Element5; 
} 
+0

感谢马克,大加赞赏。我还发现,使所有成员的属性,而不是混合他们也似乎具有预期的效果。 – Ryall