Рассмотрите следующие сериализуемые классы:
class Item {...}
class Items : List<Item> {...}
class MyClass
{
public string Name {get;set;}
public Items MyItems {get;set;}
}
Я хочу, чтобы сериализированный вывод был похож:
<MyClass>
<Name>string</Name>
<ItemValues>
<ItemValue></ItemValue>
<ItemValue></ItemValue>
<ItemValue></ItemValue>
</ItemValues>
</MyClass>
Заметьте имена элементов, ItemValues и ItemValue не соответствуют Объекту имен классов и Объектам, предполагая, что я не могу изменить Объект или класс Объектов, есть ли кто-либо, почему указать имена элементов, которые я хочу путем изменения Класса MyClass?
public class MyClass
{
public string Name {get;set;}
[XmlArray("ItemValues")]
[XmlArrayItem("ItemValue")]
public Items MyItems {get;set;}
}
Возможно, вы захотите посмотреть на "Как: Specify an Alternate Element Name for an XML Stream"
В этой статье обсуждается использование XmlElementAttribute
's ElementName
для достижения этой цели.
Вы также можете рассмотреть возможность использования Linq to Xml для создания XML из вашего класса. Что-то вроде
XElement element = new XElement(
"MyClass",
new XElement("Name", myClass.Name),
new XElement(
"ItemValues",
from item in myClass.Items
select new XElement(
"ItemValue",
new XElement("Foo", item.Foo))));
Что создаст
<MyClass>
<Name>Blah</Name>
<ItemValues>
<ItemValue>
<Foo>A</Foo>
</ItemValue>
<ItemValue>
<Foo>B</Foo>
</ItemValue>
</ItemValues>
</MyClass>