如何在Xml序列化中更改数组元素名称?

时间:2010-04-15 14:33:39

标签: c# xml-serialization

请考虑以下代码:

[Serializable]
public class Human
{
    public string Name { get; set; }
}

然后,

        using (MemoryStream ms = new MemoryStream())
        {   
            Human[] mans = new Human[] { 
                new Human() { Name = "Moim" }
                    };

            XmlSerializer xs = new XmlSerializer(typeof(Human[]));
            xs.Serialize(ms, mans);
            string s = System.Text.ASCIIEncoding.ASCII.GetString(ms.ToArray());
        }

此时,变量s将保存一个值,如

<?xml version="1.0"?>
<ArrayOfHuman xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Human>
    <Name>Moim</Name>
  </Human>
</ArrayOfHuman>

现在我需要做的就是将xml数组根元素'ArrayOfHuman'更改为'MyFavoriteArrayRootName'。我见过IXmlSerializable接口,但跳过了根元素名称。有人知道如何实现这个目标吗?

我们将非常感谢所有评论。

最好的问候。

3 个答案:

答案 0 :(得分:2)

XmlRootAttribute之前缺少

新的关键字。

XmlSerializer xs = new XmlSerializer(
    typeof(Human[]), new XmlRootAttribute("MyFavoriteArrayRootName"));

答案 1 :(得分:0)

XmlSerializer xs = new XmlSerializer(typeof(Human[]), XmlRootAttribute("MyFavoriteArrayRootName"));

答案 2 :(得分:0)

将XmlRoot放在Human类上,如下所示:

[Serializable]
[XmlRoot("MyFavoriteArrayRootName")]
public class Human
{
    public string Name { get; set; }
}