c# - .NET 中的 Xml 序列化

标签 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;}
}

当我序列化上面的类时,它会生成如下的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 结构完整,因为它在我的应用程序中无处不在。

最佳答案

我认为 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);
    }
}

关于c# - .NET 中的 Xml 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1748581/

相关文章:

c# - 正则表达式删除某些字符周围不需要的空格

c# - 在 WPF 中以编程方式为动态组合框中的动态文本框设置数据绑定(bind)

r - 将 tableauViz 抓取到 R 数据帧中

c++ - 如何使用 Boost.serialize 序列化派生模板类?

java - 反序列化JSON时如何区分not-provided和null

c# - 单击按钮(而不是单击单元格)更改 dataGridView 单元格格式

c# - 如何在 Dropdownlist selectedIndexChanged 中获取行索引?

sql - 使用带有 XMLNS 的 OPENXML 命令将 XML 导入 SQL 服务器

android - 根据屏幕设备大小调整图像按钮大小

java - 在 Spring MVC 中使用 JAXB 注释与 Jackson 反序列化问题