Изменить имя элемента XML-сериализатора элемента массива - PullRequest
2 голосов
/ 14 февраля 2010

У меня есть класс, который генерируется из файла XML с помощью инструмента XSD.exe. Класс, который у меня есть, содержит массив с элементами.

До недавнего времени рендеринг всего документа из полностью инстанцированного бизнес-объекта был возможен, однако из-за размера нам теперь нужно рендерить элементы массива документов в поток, чтобы у нас не хватало памяти.

Однако при рендеринге элементов массива вы получаете другое имя элемента в сериализации XML. Я попытался создать XMLAttributesOverride, но это вернуло мне ошибку, сообщающую, что я не могу переопределить атрибуты XmlElement для этого свойства. Я пытаюсь сохранить это строго типизированным и соотнесенным с моим XSD, поэтому, если кто-нибудь знает, как изменить имя элементов XML на их имя массива, ответ +1 для вас.

Ответы [ 2 ]

11 голосов
/ 14 февраля 2010

Вы пытались использовать атрибуты XmlArray и XmlArrayElement?
http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlarrayattribute.aspx
http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlarrayitemattribute.aspx

[XmlArrayItem(ElementName="GenericItem", Type = typeof(Item))]
[XmlArrayItem(ElementName="BookItem", Type = typeof(BookItem))]
[XmlArray]
public Item []Items {...}
5 голосов
/ 04 ноября 2015

Попробуйте это:)

[XmlType(TypeName="MyItems")]
public class MyItems:List<Item>
{   }

Результат xml:

<MyItems xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Item>...</Item>
</MyItems>
...