C# Xml 序列化 : Serialize Class properties as attributes to the parent class

标签 c# xml xml-serialization

[Serializable]
public class XX
{
    [XmlAttribute("name")]
    public string name{get;set;}
}

[Serializable]
[XmlRoot("tree")]
public class XY
{
    public XX Name{get;set;}

    [XmlAttribute("surname")]
    public Surname{get;set;}
}

您好,我正在尝试将类似上述这些类的内容序列化为 XML。我的问题是 XX 类的属性应该序列化为 XY 类序列化的属性,而不是 XmlElement。任何人都知道它是否可行? 在这里澄清的是应该产生的 xml 文件的示例:

<tree name="Jack" surname="Thompson">
</tree>

我不想要这个:

<tree surname="Thompson">
    <name>Jack</name>
</tree>

最佳答案

您可能应该调整您的类结构以反射(reflect)您想要的 xml。如果“name”只是元素“tree”的属性,那么理想情况下,字符串“name”应该是类“XY”的属性,而类“XX”根本不存在。

但是,如果您真的需要这些类像现在这样存在,那么我会建议创建第三个类作为代理项,它的结构与您的 xml 匹配,并在类 XY 中创建一个方法,它将自己翻译成你的新类(class)。然后序列化新类而不是 XY 和 XX。

关于C# Xml 序列化 : Serialize Class properties as attributes to the parent class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10212001/

相关文章:

c# - 如何将原始数据列表转换为 Json 列表?

c# - 如何阻止 VC# 将控制台输出重定向到输出窗口?

c# - 无法使用 CommandLineParser 包运行程序

xml - 在不知道子标签顺序的情况下流解析 xml

c# - 如何在 C# 中将 XML 元素反序列化为具有属性和文本的元素数组?

c# - 将两个 linq 查询放入一个列表框中

java - 获取请求 xml 的 Groovy 脚本

java - 如何在java中获取XML文件中节点的完整路径?

c# - Windows Phone C# 中的 XML 反序列化

c# - 这种关于访问数据的设计如何?