2012-04-24 17 views
5

Mam następujące XMLdeserializacji XML do klasy, problem z listy <>

<map version="1.0"> 
    <properties> 
     <property name="color" value="blue" /> 
     <property name="size" value="huge" /> 
     <property name="texture" value="rugged" /> 
    </properties> 
</map> 

Próbuję napisać klas, które mogę deserializowania to na, to co mam:

[XmlRoot("map")] 
public class MyMap 
{ 
    [XmlAttribute("version")] 
    public decimal Version { get; set; } 
    [XmlElement("properties")] 
    public List<MyProperty> Properties { get; set; } 
} 

public class MyProperty 
{ 
    [XmlAttribute("name")] 
    public string Name { get; set; } 
    [XmlAttribute("value")] 
    public string Value { get; set; } 
} 

Problem polega na tym, że nie mogę odczytać listy właściwości, otrzymuję tylko jeden wpis i ma on wartość zerową zarówno w nazwie, jak i wartości.

Czy są jakieś magiczne cechy, które muszę ustawić, aby to działało?

+0

Jeśli powyższe jest cały XML masz, to jest nieważne, i jestem zaskoczony, że w ogóle jest deserializacji. – Tejs

Odpowiedz

12

Powinieneś zmienić MyMap jak poniżej. XmlArray i XmlArrayItem są magiczne atrybuty

[XmlRoot("map")] 
public class MyMap 
{ 
    [XmlAttribute("version")] 
    public decimal Version { get; set; } 
    [XmlArray("properties")] 
    [XmlArrayItem("property")] 
    public List<MyProperty> Properties { get; set; } 
} 
+0

Genialny, który działał idealnie. Jeśli ktoś zna dobry tutorial na temat tych atrybutów i jak działają, byłbym wdzięczny. Wszystko, co znajduję, to kopie/pasty bardzo prostych. – Toodleey

+0

Nadal bardzo istotne. Przyłapał mnie dzisiaj na około 2 godziny. Nie mogłem tego rozgryźć. Dziękuję bardzo –

1

Jednym ze sposobów znalezienia rozwiązania byłoby zapełnienie obiektu kodem, a następnie przekształcenie go do postaci XML i sprawdzenie, jak wygląda schemat. Możesz również użyć xsd.exe do autogeneracji klas.

2

Zamiast XmlElement, spróbuj:

[XmlArray("Properties")] 

... na liście <> nieruchomości.

+0

XML rozróżnia wielkość liter, Właściwości! = Właściwości – bjoern

Powiązane problemy