c# - 如何更改 Xml 序列化中的数组元素名称?

标签 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 接口(interface),但是它跳过了根元素名称。有人知道如何实现这一点吗?

我们将不胜感激所有评论。

最好的问候。

最佳答案

XmlRootAttribute 之前缺少

new 关键字。

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

关于c# - 如何更改 Xml 序列化中的数组元素名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2646185/

相关文章:

c# - .NET Xml 序列化程序可选属性

c# XML序列化为元素赋值

c# - 使用 XmlInclude 装饰的基类在序列化时仍会抛出类型未知异常是有原因的吗?

c# - 在c#中编码特殊字符

c# - 查找每小时创建的最大行数?

c# - 如何将字符串解析为具有特定格式的 DateTime?

.net - xml 字符串的通用反序列化

c# - Dynamics CRM & .NET (C#) 为所有行设置字段值

c# - 如何调试 linq to sql InsertOnSubmit 语句?

C# 将 XML 反序列化为对象