C#Xml序列化:将类属性序列化为父类的属性

时间:2012-04-18 14:50:20

标签: 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>

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

相关问题