2016-10-28 4 views
1

Я пытался решить это сам, но не узнал.XML Deserialize C# Array с атрибутами

У меня есть XML, который включает в себя массив responseElementList

<responseElementList name="something"> 
<valueList name="NAT_TEXT">XXX</valueList> 
<value name="XXX_MAIN">NONE</value> 
<value name="XXX_SEC">NONE</value> 
<value name="XXX_XXX">NO</value> 
<value name="XXX">YES</value> 
<value name="XXX_NET">NO</value> 
</responseElementList> 

и я пытаюсь десериализации его

public class responseElementList 
    { 
     [XmlAttribute("name")] 
     public String name { get; set; } 

     [XmlElement("valueList")] 
     public ValueModel valueList { get; set; } 

     [XmlElement("value")] 
     public List<ValueModel> value { get; set; } 
    } 

    public class ValueModel 
    { 
     [XmlAttribute("name")] 
     public String name { get; set; } 

     [XmlText] 
     public String Value { get; set; } 
    } 

Я всегда получаю пустой список с этой десериализации. (Valuelist населяет просто отлично)

ответ

0

Не видя ваш де-сериализации, так что не знаю, что это неправильно, но следующие работы:

public class responseElementList 
{ 
    [XmlAttribute("name")] 
    public String name { get; set; } 

    [XmlElement("valueList")] 
    public ValueModel valueList { get; set; } 

    [XmlElement("value")] 
    public List<ValueModel> value { get; set; } 
} 

public class ValueModel 
{ 
    [XmlAttribute("name")] 
    public String name { get; set; } 

    [XmlText] 
    public String Value { get; set; } 
} 

public static T DeSerialize<T>(string xml) 
{ 
    T result = default(T); 
    using (TextReader reader = new StringReader(xml)) 
    { 
     var ser = new XmlSerializer(typeof(T)); 
     result = (T)ser.Deserialize(reader); 
    } 
    return result; 
} 

void Main() 
{ 
    var a = @"<responseElementList name='something'> 
<valueList name='NAT_TEXT'>XXX</valueList> 
<value name='XXX_MAIN'>NONE</value> 
<value name='XXX_SEC'>NONE</value> 
<value name='XXX_XXX'>NO</value> 
<value name='XXX'>YES</value> 
<value name='XXX_NET'>NO</value> 
</responseElementList>"; 

    var obj = DataHelper.DeSerialize<responseElementList>(a); 
    obj.Dump(); 
} 

дает

enter image description here

+0

большое спасибо, это была реализация десериализатора ReSharper – depill