2009-07-30 12 views
14

Sto tentando di deserializzare l'XML di seguito in classe, con il Components deserializzato in un List<string>, ma non riesco a capire come farlo. Il deserializzatore funziona bene per tutte le altre proprietà, ma non Components. Qualcuno sa come fare questo?Come deserializzare in un elenco <String> utilizzando 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

Si prega di inviare il corso che si sta tentando di serializzare e deserializzare. –

risposta

36

Aggiungere una proprietà come questa di tenere l'elenco dei componenti:

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

Edit: Scusa ho letto male che. Vuoi leggerlo in una collezione di stringhe. Ho appena provato questo di seguito e ha funzionato sul tuo campione. La chiave è solo per impostare gli attributi di serializzazione xml corretti.

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

Mi è stato davvero di grande aiuto grazie – Lijo

+0

[XmlArray] è facoltativo se il nome della proprietà è uguale al nome del tag –

+0

[XmlArrayItem (ElementName = "Component")] può essere abbreviato come [XmlArrayItem ("Component")]. Testato su .Net 4.0 –

Problemi correlati