2011-01-13 8 views
1

Ich habe dieses Element in meiner KlasseSerialisierung XML C# .NET2.0

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

, wenn ich meine Klasse serialisiert ich dieses:

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

Um XPath-Abfrage zu vereinfachen Ich möchte füge eine neue Direktive hinzu, die mir ein Ergebnis gibt wie

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

Ich möchte trival Attribute Namen hinzufügen und den Wert festlegen. ist es möglich?

Antwort

0

Eine Möglichkeit wäre, eine benutzerdefinierte generische Erfassungsklasse einzuführen, die sich selbst serialisiert, wie Sie es möchten.

-2

Sie String-Typen ersetzen abgedeckt mit Sie ZPhotos Typ.

[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

Ich verstehe nicht, warum Sie mir sagen, mit einer Zeichenfolge zu ersetzen, in meiner Antwort nehme ich Foto, aber es könnte andere Sache sein . –

+0

Anstatt String [] Fotos zu verwenden, können Sie sie durch ZPhoto [] Fotos ersetzen, wie Sie ZPhoto serialisieren wollten. –

+0

OK Ich verstehe, können Sie Ihre Antwort bearbeiten, weil ich meine Stimme nicht ablehnen kann –