2014-02-17 2 views
1

У меня есть XML, как показано ниже. Я хочу преобразовать это в объект C#. Я попробовал modyfying, но не мог заставить его работать.Deserialize XML для объекта не работает

<SLVGeoZone-array> 
    <SLVGeoZone> 
    <id>19</id> 
    <type>geozone</type> 
    <name>60_OLC_SC</name> 
    <namesPath>GeoZones/60_OLC_SC</namesPath> 
    <idsPath>1/19</idsPath> 
    <childrenCount>0</childrenCount> 
    </SLVGeoZone> 
    </SLVGeoZone-array> 

У меня есть письменное образец C# код и он не работает:

[Serializable] 
public class SLVGeoZone 
{ 
    [XmlElement("id")] 
    public string id { get; set; } 

    [XmlElement("type")] 
    public string type { get; set; } 

    [XmlElement("name")] 
    public string name { get; set; } 

    [XmlElement("namespath")] 
    public string namespath { get; set; } 

    [XmlElement("idspath")] 
    public string idspath { get; set; } 

    [XmlElement("childrencount")] 
    public string childrencount { get; set; } 
} 

[Serializable] 
[XmlRoot("SLVGeoZone-array")] 
public class SLVGeoZone-array 
{ 
    [XmlArray("SLVGeoZone-array")] 
    [XmlArrayItem("SLVGeoZone", typeof(SLVGeoZone))] 
    public SLVGeoZone[] Car { get; set; } 
} 

А в виде:

XmlSerializer serializer = new XmlSerializer(typeof(CarCollection)); 
StreamReader reader = new StreamReader(path); 
cars = (CarCollection)serializer.Deserialize(reader); 
reader.Close(); 

Может кто-то предложить, что я делаю неправильно?

+0

Что вы имеете в виду "не работает"? Вызывает ли это исключение? Возвращает ли он пустой объект? Неудивительно, что ужасные извращения от старших измерений? – Aron

ответ

1
  1. SLVGeoZone-array не является допустимым именем класса в C#

    [Serializable()] 
    [XmlRoot("SLVGeoZone-array")] 
    public class SLVGeoZones 
    { 
        [XmlElement("SLVGeoZone")] 
        public SLVGeoZone[] Cars { get; set; } 
    } 
    
  2. XmlElement значения атрибутов должны быть точно такими же, как имена элементов в файле XML. Нет.

    [Serializable()] 
    public class SLVGeoZone 
    { 
        [XmlElement("id")] 
        public string id { get; set; } 
    
        [XmlElement("type")] 
        public string type { get; set; } 
    
        [XmlElement("name")] 
        public string name { get; set; } 
    
        [XmlElement("namesPath")] 
        public string namespath { get; set; } 
    
        [XmlElement("idsPath")] 
        public string idspath { get; set; } 
    
        [XmlElement("childrenCount")] 
        public string childrencount { get; set; } 
    } 
    
  3. Что CarCollection и почему вы пытаетесь десериализации вашего XML в CarCollection вместо классов вы показанные здесь?

    XmlSerializer serializer = new XmlSerializer(typeof(SLVGeoZones)); 
    StreamReader reader = new StreamReader("Input.txt"); 
    var items = (SLVGeoZones)serializer.Deserialize(reader); 
    reader.Close(); 
    
+0

Спасибо, за терпение и время .. это сработало. – user1687824

Смежные вопросы