2009-07-30 6 views
14

J'essaye de désérialiser le XML ci-dessous en classe, avec le Components désérialisé dans un List<string>, mais ne peux pas comprendre comment faire ainsi. Le désérialiseur fonctionne correctement pour toutes les autres propriétés, mais pas Components. Quelqu'un sait-il comment faire ça?Comment désérialiser dans une liste <String> en utilisant le XmlSerializer

<ArsAction> 
    <CustomerName>Joe Smith</CustomerName> 
    <LoginID>jdsmith</LoginID> 
    <TicketGroup>DMS</TicketGroup> 
    <Software>Visio 2007 Pro</Software> 
    <Components> 
    <Component>Component 1</Component> 
    <Component>Component 2</Component> 
    </Components> 
    <Bldg>887</Bldg> 
    <Room>1320p</Room> 
</ArsAction> 
+0

Veuillez publier la classe que vous essayez de sérialiser et de désérialiser. –

Répondre

36

Ajouter une propriété comme celui-ci pour tenir la liste des composants:

[XmlArray()] 
public List<Component> Components { get; set; } 

Edit: Désolé j'ai mal lu cela. Vous voulez le lire dans une collection de chaînes. J'ai juste essayé ceci ci-dessous et cela a fonctionné sur votre échantillon. La clé est juste pour installer les attributs de sérialisation xml corrects.

public class ArsAction 
{ 
    [XmlArray] 
    [XmlArrayItem(ElementName="Component")] 
    public List<string> Components { get; set; } 
} 
+0

m'a vraiment aidé merci beaucoup – Lijo

+0

[XmlArray] est facultatif si le nom de la propriété est le même que le nom de la balise –

+0

[XmlArrayItem (ElementName = "Component")] peut être raccourci en tant que [XmlArrayItem ("Component")]. Testé sur .Net 4.0 –

Questions connexes