2010-07-08 2 views
1

Xml здеськак десериализации этот XML в Silverlight

<?xml version="1.0" encoding="utf-8"?> 
<s> 
    <Items> 
    <b name="test" width="100"> 
    <Items> 
     <d x="1"/> 
     <e width="50"/> 
    </Items> 
    </b> 
    <b name="test2" width="200"> 
    <Items> 
     <d x="2"/> 
    </Items> 
    </b> 
    </Items> 
</s> 

Я создаю эти

public class s 
{ 
    public s(){ 
    Items=new List<b>(); 
    } 
    List<b> Items{get;set;} 
} 

public class b 
{ 
    public b(){ 
    Item=new List<object>(); 
    } 
    [XmlAttribute] 
    public string name {get;set;} 
    [XmlAttribute] 
    public int width {get;set;} 
} 

public class d 
{ 
    public d(){} 
    [XmlAttribute] 
    public int x {get;set;} 
} 

public class e 
{ 
    public e(){} 
    [XmlAttribute] 
    public int width {get;set;} 
} 

классов и мой основной код здесь

s mainobj=null; 
XmlSerializer ser=new XmlSerializer(typeof(s)); 
mainobj=ser.Deserialize(memoryStream) as s; 

Debug.WriteLine(mainobj.Items.Count.ToString()); 
Debug.WriteLine(mainobj.Items[0].name); 
Debug.WriteLine(mainobj.Items[0].Items.Count.ToString()); 

Выход

2 
test 
0 

b Объект содержит 2 типа объекта.

Как десериализовать эти объекты.

Что не так в моем коде?

ответ

1

Мой любимый способ понять эти вопросы десериализации - это проверить его назад.

Используйте XmlSerializer для SERIALIZE экземпляр ваших ожидаемых классов в XML-файл и посмотрите на XML, который был сгенерирован. Это должно дать вам некоторые подсказки, которые помогут вам понять, что происходит ...

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