.NET中的Xml序列化

Gha*_*han 3 c# xml serialization

我有一个类,我想序列化为xml.该课程如下所示

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

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

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

<clubMember>
  <memberName> xxxx</memberName>
  <memberPoints> 
     <point >xx </point>
     <point >xx </point>
  </memberPoints>
</clubMember>
Run Code Online (Sandbox Code Playgroud)

我想生成如下的xml:

<clubMember>
  <memberName> xxxx</memberName>
  <memberPoints> 
     <point value="xx"/>
     <point value="xx"/>
  </memberPoints>
</clubMember>
Run Code Online (Sandbox Code Playgroud)

有没有办法生成上面提到的xml,而不修改类结构?我真的很想保持calss结构的完整性,因为它在我的应用程序中随处可见.

Dar*_*rov 6

我不认为这是可能的List<int>.您可以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);
    }
}
Run Code Online (Sandbox Code Playgroud)