.NET中的XML序列化

3

我有一个类需要序列化为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:
```xml

我要翻译的内容:

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

有没有一种方法可以生成上面提到的XML,而不需要修改类结构?我很喜欢保持类结构不变,因为它在我的应用程序中被广泛使用。
2个回答

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);
    }
}

这就是我想建议的。 - Ryall
非常感谢 尽管如此,我还是试图避免修改类的结构。 - Ghassan Karwchan

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接