2011-01-13 7 views
1

私は私が私のクラスをシリアル化するとき、私はこの取得シリアル化のXMLのC#.NET2.0

[XmlArray("photos")]   
public List<zPhoto> EntityPhotos; 

私のクラスでは、この要素をしました:

<photos> 
    <zPhoto id="73102" type="a" /> 
    <zPhoto id="73102" type="b"/> 
    <zPhoto id="73105" type="a" /> 
    <zPhoto id="73105" type="b" /> 
</photos> 

を私がしたいXPathクエリを簡単にするために

<photos count="2" > 
    <zPhoto id="73102" type="a" /> 
    <zPhoto id="73102" type="b"/> 
    <zPhoto id="73105" type="a" /> 
    <zPhoto id="73105" type="b" /> 
</photos> 

私はtrival属性名を追加して値を設定したいと考えています。出来ますか?

答えて

0

1つの方法は、自分自身を必要に応じてシリアル化するカスタムジェネリックコレクションクラスを導入することです。

-2

あなたがして、String型に置き換えることができる上、前の質問で説明されてきたあなたのメンバ変数

[XmlAttribute("count")] 

EDIT

の上に属性を追加します。あなたはZPhotosタイプです。

[XmlRoot("EntityPhotos")] 
    public class EntityPhotos 
    { 
     private List<String> _photos; 

     public EntityPhotos() 
     { 
      _photos = new List<string> 
      { 
       "One.jpg", 
       "Two.png", 
       "Three.gif" 
      }; 
     } 

     [XmlElement("Photos")] 
     public String[] Photos 
     { 
      get 
      { 
       return _photos.ToArray(); 
      } 

      set {;} 

     } 

     [XmlAttribute("Count")] 
     public Int32 Count 
     { 
      get 
      { 
       if (Photos != null) 
        return Photos.Length; 
       else 
        return 0; 
      } 

      set{;} 
     } 
    } 
+0

私は文字列で置き換えるように言っている理由を理解できない、私の答えは写真を取るが、 。 –

+0

String [] Photosを使用する代わりに、ZPhotoをシリアル化したかったので、ZPhoto [] Photosに置き換えることができます。 –

+0

OK回答を編集することはできますか?私の投票を辞退できません –