2012-04-18 74 views
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文件的例子应该结果:C#Xml序列化:序列化类属性作为父类的属性

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

我不希望这样的:

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

没有办法做到这一点。另外,你不需要'[Serializable]' – 2012-04-18 14:53:54

回答

0

你应该调整你的类结构以反映你想要的xml。如果“name”只是元素“tree”的一个属性,那么理想情况下,你应该将字符串“name”作为类“XY”的属性,而类“XX”根本不存在。然而,如果你真的需要这些类来像现在这样存在,那么我会建议创建第三个类作为代理,它将有一个匹配你的xml的结构,并在类XY中创建一个方法这将把自己转化为你的新课程。然后序列化新类而不是XY和XX。

+0

谢谢,这不是解决方案,但是有用的解决方案! – mariaoialvarez 2012-04-18 16:25:10

0

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