XmlSerializing一个数组时如何设置根节点名?

pau*_*aul 18 .net xml-serialization root

我有一个对象数组,我想将其序列化为XML.这些对象注释为设置XML节点名称,但我想知道如何设置XML根节点的名称.

代码如下所示:

// create list of items
List<ListItem> list = new List<ListItem>();
list.Add(new ListItem("A1", new Location(1, 2)));
list.Add(new ListItem("A2", new Location(2, 3)));
list.Add(new ListItem("A3", new Location(3, 4)));
list.Add(new ListItem("A4<&xyz>", new Location()));

// serialise
XmlSerializer ser = new XmlSerializer(typeof(ListItem[]));
FileStream os = new FileStream(@"d:\temp\seri.xml", FileMode.Create);
ser.Serialize(os, list.ToArray());
os.Close();
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

<?xml version="1.0"?>
<ArrayOfPlace xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Place>
    <Placename>A1</Placename>
    <Location>
      <Lat>1</Lat>
      <Long>2</Long>
    </Location>
  </Place>
  <Place>
  ...
Run Code Online (Sandbox Code Playgroud)

ListItem已使用XmlElement注释重命名为Place,但如何设置根节点的名称以重命名'ArrayOfPlace'节点?

Dar*_*rov 28

试试这个:

XmlSerializer ser = new XmlSerializer(
    typeof(ListItem[]), 
    new XmlRootAttribute("CustomRootName"));
Run Code Online (Sandbox Code Playgroud)