2009-07-30 4 views
14

Próbuję deserializować XML poniżej w klasie, z Components deserialized w List<string>, ale nie może dowiedzieć się, jak to zrobić. Deserializator działa dobrze dla wszystkich innych właściwości, ale nie dla Components. Czy ktoś wie, jak to zrobić?Jak od deserializacji do listy <String> przy użyciu 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

Opublikuj klasę, którą próbujesz serializować i deserializować. –

Odpowiedz

36

dodać obiekt tak, aby trzymać na liście składników:

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

Edit: Przepraszam za błędne odczytanie tego. Chcesz go przeczytać w zbiorze ciągów. Próbowałem tego poniżej i działało na próbce. Kluczem jest tylko ustawienie poprawnych atrybutów serializacji xml.

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

Naprawdę mi pomógł wiele dzięki – Lijo

+0

[XmlArray] jest opcjonalne, jeśli nazwa właściwości jest taka sama jak nazwa znacznika –

+0

[XmlArrayItem (ElementName = "Component")] może być skrócona jako [XmlArrayItem ("Component")]. Przetestowano na .Net 4.0 –