代码之家  ›  专栏  ›  技术社区  ›  Moim

如何在XmlSerialization中更改数组元素名?

  •  3
  • Moim  · 技术社区  · 15 年前

    请考虑以下代码:

    [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 回复  |  直到 13 年前
        1
  •  0
  •   juharr    15 年前

    尝试

    XmlSerializer xs = new XmlSerializer(typeof(Human[]), XmlRootAttribute("MyFavoriteArrayRootName"));
    
        2
  •  2
  •   John Saunders    15 年前

    新的 xmlrootattribute之前缺少关键字。

    XmlSerializer xs = new XmlSerializer(
        typeof(Human[]), new XmlRootAttribute("MyFavoriteArrayRootName"));
    
        3
  •  0
  •   orandov    13 年前

    将xmlroot放在您的类上,如下所示:

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