2012-01-18 13 views
2

クラスをシリアル化する際に、この形式でxmlを取得しています。シリアライゼーション:.NETの各要素に一意の名前を付ける方法は?

<Root Name="blah"> 
    <Element>1</Element> 
    <Element>2</Element> 
    <Element>3</Element> 
    <Element>4</Element> 
</root> 

私のクラスは

public class Root 
{ 
    public List<data> Element { get; set; } 
} 

ですが、私は形式のデータが必要になります。

<Root Name="blah"> 
    <Element0>1</Element0> 
    <Element1>2</Element1> 
    <Element2>3</Element2> 
    <Element3>4</Element3> 
</root> 

助けてください...

+0

奇妙に見えますが、なぜそれが必要ですか?名前ではなく固有のelemtn属性値を持つのはどうでしょうか?たとえば、 1 – sll

+1

これは別のオブジェクト名でも動作することがわかりません。私は、なぜあなたはそのフォーマットでそれを必要とするのだろうと思います。 –

+0

XDocumentまたはXmlDocumentを使用して独自のxmlを作成 –

答えて

3

これは単にに適していないです通常のシリアライザ。 IXmlSerializableの実装は過度のものです。

必要なものだけをDOMに作成してください。開始するには良い場所は、XElementのことでしょう:あなたは、自動的にXMLシリアライザを使用してそれを行うことができれば

var el = new XElement(
    new XAttribute("Name", obj.Name), 
    obj.Element.Select((i,child) => 
     new XElement("Element" + i, child)) 
); 
var xml = el.ToString(); 

(未テスト)

0

私はよく分かりません。

ノードの番号を設定することが属性として受け入れられない場合や、ノードを次の構文まで破棄してもよろしいですか?

<Element> 
    <Order>0</Order> 
    <Value>1</Value> 
</Element> 
関連する問題