我有课PersonList
[XmlRoot("Persons")]
PersonList : List<Human>
当我将其序列化为 XML 时,默认情况下它会生成如下内容:
<Persons>
<Human>...</Human>
<Human>...</Human>
</Persons>
我的问题是需要做什么才能更改元素Human
to 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")]
on Human
不将标签更改为Person
from Human
.