2011-09-14 20 views
0

我有一個簡單的數組,我需要序列化爲更大對象的一部分。序列化數組的元素但不是數組(XMLSerizlization)

public class Holder 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public Thing[] Thingies { get; set; } 
} 

public class Thing {} 

通常這會被序列化爲:

... 
<Holder> 
    <ID>...</ID> 
    <Name>...</Name> 
    <ArrayOfThing> 
     <Thing>...</Thing> 
     <Thing>...</Thing> 
     <Thing>...</Thing> 
     ... 
    </ArrayOfThing> 
</Holder> 

沒有太擔心反序列化,是有辦法,我可以簡單地刪除ArrayOf元素,但保持裏面的元素,讓我d有:

... 
<Holder> 
    <ID>...</ID> 
    <Name>...</Name> 
    <Thing>...</Thing> 
    <Thing>...</Thing> 
    <Thing>...</Thing> 
    ... 
</Holder> 
+0

'持有人'是否只有'事物'陣列? –

+0

@奧斯汀不,它會有其他元素。讓我更新這個例子。 – MPelletier

回答

1

嘗試

public class Holder 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 

    [XmlElement("Thing")] 
    public Thing[] Thingies { get; set; } 
} 

MSDN for XmlElementAttribute有一些例子也是如此。

+0

難道只是將Thing換成另一個Thing標籤? – MPelletier

+0

@MPelletier nope。看看鏈接的msdn頁面中的例子,或者試試看。 –

+0

好吧,我認爲XmlElement是重命名標籤的一種方式。傻我。我實際上沒有看到它的行動。我會檢查頁面並嘗試。 :) – MPelletier

0

使用[XmlElement]屬性:

[XmlElement] 
public Thing[] Thingies { get; set; }