【问题标题】:C# Xml Serialization: Serialize Class properties as attributes to the parent classC# Xml 序列化:将类属性序列化为父类的属性
【发布时间】:2012-04-18 14:50:20
【问题描述】:
[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>

【问题讨论】:

  • 没有办法做到这一点。另外,你不需要[Serializable]

标签: c# xml xml-serialization


【解决方案1】:

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

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

【讨论】:

  • 谢谢,这不是解决方案,但有助于找到解决方案!
【解决方案2】:

我不认为你能做到这一点。 XML 的结构告诉序列化器如何工作。如果您在父对象中有一个属性标记为名为 name 的属性,那么序列化程序将不知道要使用哪个 name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多