У меня есть класс PersonList
[XmlRoot("Persons")]
PersonList : List<Human>
когда я сериализую это в XML, по умолчанию он будет создавать что-то вроде этого:
<Persons>
<Human>...</Human>
<Human>...</Human>
</Persons>
Мой вопрос в том, что нужно сделать, чтобы изменить элемент Human
на Person
на выходе? поэтому выход будет:
<Persons>
<Person>...</Person>
<Person>...</Person>
</Persons>
и как десериализовать указанный выше XML объект класса PersonList
?
В совете Ника, Вот мой тестовый код:
[XmlRoot("Persons")]
public class Persons : List<Human>
{
}
[XmlRoot("Person")]
public class Human
{
public Human()
{
}
public Human(string name)
{
Name = name;
}
[XmlElement("Name")]
public string Name { get; set; }
}
void TestXmlSerialize()
{
Persons personList = new Persons();
personList.Add(new Human("John"));
personList.Add(new Human("Peter"));
try
{
using (StringWriter writer = new StringWriter())
{
XmlSerializer serializer = new XmlSerializer(typeof(Persons));
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();
namespaces.Add(string.Empty, string.Empty);
XmlWriter xmlWriter = XmlWriter.Create(writer, settings);
serializer.Serialize(xmlWriter, personList, namespaces);
Console.Out.WriteLine(writer.ToString());
}
}
catch (Exception e)
{
Console.Out.WriteLine( e.ToString());
}
}
Вывод тестового кода:
<Persons>
<Human>
<Name>John</Name>
</Human>
<Human>
<Name>Peter</Name>
</Human>
</Persons>
Как показывает результат, [XmlRoot("Person")]
на Human
не меняет тег на Person
из Human
.