2012-04-18 75 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