Принудительно заставить элементы 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>
Мне нужно, чтобы порядок был точным из-за внешнего валидатора.
1 ответ
Решение
Вы должны быть в состоянии установить 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;
}