Как указать порядок XmlAttributes, используя XmlSerializer - PullRequest
7 голосов
/ 12 апреля 2010

XmlElement имеет атрибут «Порядок», который можно использовать для указания точного порядка ваших свойств (в любом случае по отношению друг к другу) при сериализации с использованием XmlSerializer.

Есть ли аналогичная вещь для XmlAttribute? Я просто хочу установить порядок атрибутов из чего-то вроде

<MyType end="bob" start="joe" />

до

<MyType start="joe" end="bob" />

Это просто для удобства чтения, действительно для меня.

Ответы [ 3 ]

9 голосов
/ 12 апреля 2010

Нет, поскольку у атрибутов нет порядка в XML (раздел 3.1 рекомендации XML гласит: «Обратите внимание, что порядок спецификаций атрибутов в теге start или tag пустого элемента не имеет значения».) 1001 *

8 голосов
/ 23 сентября 2014

По моему опыту, порядок сериализации атрибутов такой же, как и порядок определения ваших общедоступных свойств. Однако если вы объединяете свойства с полями в одном классе, например,

[Serializable()]
public class MyClass
{
   [XmlAttribute("ADoubleProp")]
   public double ADoubleProp { get; set; }

   [XmlAttribute("AnIntField")]
   public int AnIntField = 42;
}

тогда поля получают первые атрибуты, а затем свойства. Код выше будет производить что-то вроде этого

<MyClass AnIntField="42" ADoubleProp="0" />
1 голос
/ 31 января 2014

В C #, насколько я нашел, порядок атрибутов сериализуется в порядке, который они определены в классе.

Смотрите мой ответ на этот вопрос здесь: https://stackoverflow.com/a/21468092/607117

...