代码之家  ›  专栏  ›  技术社区  ›  Natalie Perret

如何使用IXmlSerializable更改根元素的名称?

  •  1
  • Natalie Perret  · 技术社区  · 6 年前

    下面的代码片段序列化了一个类的简单实例 Person <Person attribute="value" /> 使用 IXmlSerializable :

    using System;
    using System.Xml;
    using System.Xml.Schema;
    using System.Xml.Serialization;
    
    public class Person : IXmlSerializable
    {
        public XmlSchema GetSchema()
        {
            return null;
        }
        public void ReadXml(XmlReader xmlReader)
        {
            throw new System.NotImplementedException();
        }
        public void WriteXml(XmlWriter xmlWriter)
        {
            xmlWriter.WriteAttributeString("attribute", "value");
        }
    }
    
    class Program
    {    
        public static void Main()
        {
            var xmlWriterSettings = new XmlWriterSettings
            {
                Indent = true,
                OmitXmlDeclaration = true
            };
    
            using (var xmlTextWriter = XmlWriter.Create(Console.Out, xmlWriterSettings))
            {
                var xmlSerializer = new XmlSerializer(typeof(Person));
                var person = new Person();
                xmlSerializer.Serialize(xmlTextWriter, person);
            }
        }
    }
    

    我正在寻找一种方法来修改 person ,我该怎么做?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Jon Skeet    6 年前

    你可以用 XmlRootAttribute 要指定根元素的元素名称,请执行以下操作:

    [XmlRoot(ElementName = "person")]
    public class Person : IXmlSerializable
    {
        ...
    }