2
[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>
4

2 回答 2

0

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

于 2012-04-18T14:57:24.247 回答
0

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

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

于 2012-04-18T14:58:00.377 回答