2010-09-01 64 views
3

目標連載:更改根節點的名稱不改變類名

以一個名爲「項」和輸出的序列化XML作爲類:

<Template><!--some properties --></Template> 

問題

根節點派生於正在實現IXmlSerializable的類名稱之外。

// By the time I get here 'writer' already has a root node 
    public void WriteXml(XmlWriter writer) 
    { 
     writer.WriteStartElement("Template"); 
     // write out the properties 
     writer.WriteEndElement(); 
    } 

所以我風與XML,看起來像

<Item><Template><!-- some properties --></Template></Item> 

問題

有一個屬性,我可以覆蓋一個屬性,或任何讓我想要的效果(除從改變類名)?

謝謝!

感謝Frederik的解析!

由於這個問題在@Frederik Gheysels的回答中有所回答,我以爲我會把它放在這裏,所以它不會被埋沒。

只需將XmlRoot屬性添加到您的類中,這將更改根節點的輸出xml。

實施例:

[XmlRoot("Template")] 
public class Item : IXmlSerializable 
{ 
    //Item's properties 
} 
+0

請顯示序列化代碼並顯示Item類的位置。它是其他類的成員嗎? – 2010-09-01 17:05:19

+0

我想你想XML Type屬性 http://msdn.microsoft.com/en-us/library/2baksw0z(VS.71).aspx – asawyer 2010-09-01 17:08:13

+0

@John Saunders:項目不是另一個類的成員。我正在使用內置的.Net XmlSerializer。 – 2010-09-01 17:37:34

回答

6

檢查XmlRootAttribute類。

+0

太棒了。你的回答幫我找到了'XmlRoot'屬性。通過在我的類聲明'public class Item:IXmlSerializable'上面添加'[XmlRoot(「Template」)]]。我能夠得到理想的效果。 – 2010-09-01 17:11:11