2011-09-14 2 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

'Holder'は' Things'の配列しか持っていませんか? –

+0

@Austinいいえ、それは他の要素を持っています。例を更新しましょう。 – 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

OK、私はXmlElementがタグの名前を変更する方法だと思いました。愚かな私。私は実際に実際にそれを見ていない。私はそのページをチェックして試してみる。 :) – MPelletier

0

IXmlSerializableを実装すると、Thingやその他の子を含むXML要素から読み書きできるようになります。ここで

は、あなたがこのProper way to implement IXmlSerializable?

0

使用[XmlElement]属性を実装する方法を次のとおりです。

[XmlElement] 
public Thing[] Thingies { get; set; } 
関連する問題