2010-12-02 14 views
1

を使用しながら、要素の表示順をカスタマイズし、私は私のコードでC#のアイテム・クラスに以下のように要素を定義するクラスシリアル化はC#

public class Item 
{  

    public string ShortDesc {get;set;} 

    [XmlArrayItem(ElementName="category")] 
    public List<string> categories = new List<string>(); 
    public string SubType{get;set;} 
} 

を持っています

<subtype>Applications</subtype> 
<shortDesc>Short Description</shortDesc> 
<categories> 
     <category>Category1</category> 
     <category>Category2</category> 
     <category>Category3</category> 
</categories> 
:私はオブジェクト

XMLをシリアル化するとき、私は、このXML出力を取得しています

が、私は、出力がどのように

<subtype>Applications</subtype> 
<categories> 
     <category>Category1</category> 
     <category>Category2</category> 
     <category>Category3</category> 
</categories> 
<shortDesc>Short Description</shortDesc> 

この順になりたいが、それは私がOrder=てみました。この方法を表示することが可能であるが、それは唯一のXMLELement

+0

(私はフォーマットを整理しましたが、エディタの "code"ボタンに注意してください; p) –

答えて

4
public class Item 
{ 
    [XmlElement("shortDesc", Order=2)] 
    public string ShortDesc { get; set; } 

    private readonly List<string> categories = new List<string>(); 
    [XmlArray("categories", Order = 3), XmlArrayItem("category")] 
    public List<string> Categories { get { return categories; } } 

    [XmlElement("sub-type", Order = 1)] 
    public string SubType { get; set; } 
} 

注明示的に取り[XmlArray]これにより、Order=を指定することができます。私もリストをあなたのためのプロパティに移しました(これは標準です)。