【问题标题】:Xml Serialization in .NET.NET 中的 XML 序列化
【发布时间】:2009-11-17 12:35:33
【问题描述】:

我有一个要序列化为 xml 的类。 该类如下所示

[XmlRoot("clubMember")]
public class Person
{
   [XmlElement("memberName")]
    public string Name {get; set;}

    [XmlArray("memberPoints")]
    [XmlArrayItem("point")]
    public List<Int32> ClubPoints {get; set;}
}

当我序列化上面的类时,它会生成下面的xml

<clubMember>
  <memberName> xxxx</memberName>
  <memberPoints> 
     <point >xx </point>
     <point >xx </point>
  </memberPoints>
</clubMember>

我想生成如下的xml:

<clubMember>
  <memberName> xxxx</memberName>
  <memberPoints> 
     <point value="xx"/>
     <point value="xx"/>
  </memberPoints>
</clubMember>

有没有办法在不修改类结构的情况下生成上面提到的xml? 我真的很喜欢保持 calss 结构完整,因为它在我的应用程序中无处不在。

【问题讨论】:

    标签: c# xml serialization


    【解决方案1】:

    我认为List&lt;int&gt; 不可能做到这一点。您可以改为定义一个类 Point

    [XmlRoot("clubMember")]
    public class Person
    {
        [XmlElement("memberName")]
        public string Name { get; set; }
    
        [XmlArray("memberPoints")]
        [XmlArrayItem("point")]
        public List<Point> ClubPoints { get; set; }
    }
    
    public class Point
    {
        [XmlAttribute("value")]
        public int Value { get; set; }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            var member = new Person
            {
                Name = "Name",
                ClubPoints = new List<Point>(new[] 
                { 
                    new Point { Value = 1 }, 
                    new Point { Value = 2 }, 
                    new Point { Value = 3 } 
                })
            };
            var serializer = new XmlSerializer(member.GetType());
            serializer.Serialize(Console.Out, member);
        }
    }
    

    【讨论】:

    • 这是我的建议。
    • 非常感谢,不过我尽量避免修改类结构
    【解决方案2】:

    我认为您可以做到这一点的唯一方法是手动实现IXmlSerializable

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多