2009-10-20 46 views
1

我在C#中的下列類,我想序列:關於產品的XmlSerializer在.NET

項目

項目項:項目

文件夾:項目

項目(包含 項的集合,可以是項目項目 或文件夾)

當我序列化一個「項目」,我得到以下...

<Project> 
    <Item xsi:type="Folder"> 
    <Name>MyFolder</Name> 
    </Item> 
</Project> 

雖然我想是這樣......

<Project> 
    <Folder> 
    <Name>MyFolder</Name> 
    </Folder> 
</Project> 

你有關於如何任何想法要做到這一點? 在此先感謝。

回答

2

我相信你需要一些像這樣的屬性添加到您的項目屬性:

[XmlArray] 
[XmlArrayItem(ElementName="ProjectItem", Type=typeof(ProjectItem))] 
[XmlArrayItem(ElementName="Folder", Type=typeof(Folder))] 
public List<Item> Project 
{ 
    get; 
    set; 
} 
+0

完美。我感謝您的幫助。 – 2009-10-20 15:15:36

2

您可以控制屬性命名:

public class MyEntity{ 
    [XmlElement(ElementName = "Folder")] 
    public someType ProjectItem{get;set;}; 
} 
+0

謝謝你的回答,但它並沒有完全解決我的問題。 「項目」類型的「項目」屬性可能包含文件夾或項目項目,所以我不能認爲它將永遠是「文件夾」例如。 – 2009-10-20 15:15:04