2013-06-02 2 views
0

Я сериализую XML-файлы на объекты. Давайте не будем говорить о том, как я сериализую его, поскольку это не проблема. Проблема заключается в том, как создать класс для элементов сложного типа. Для обычных элементов XML, я делаю это следующим образом (с использованием System.Xml.Serialization конечно)Сериализация XML - сложный тип с классом C#

public class Item 
{ 
    [XmlElement("thumbnail")] 
    public string thumbnail { get; set; } 
} 

Все работает хорошо. Но для сложного типа, я не знаю, как представить его в классе, я пытался представить его в массив как этот

public class Item 
{ 
    [XmlArray("thumbnail")] 

    [XmlArrayItem("url")] 
    public string url { get; set; } 

    [XmlArrayItem("width")] 
    public string width { get; set; } 

    [XmlArrayItem("height")] 
    public string height { get; set; } 

    public string[] thumbnail { get; set; } 
} 

, но это не сработало.

любые идеи как представлять сложный элемент XML в классе C#?

+0

Можете ли вы показать пример XML-файл? –

+0

Покажите нам схему, и мы можем помочь. Однако .NET framework/VS SDK поставляется с инструментом командной строки 'xsd.exe', который может принимать файл схемы« schema.xsd »и генерировать классы C# (или VB), чтобы вы могли просто использовать этот инструмент для создания своего классов или, по крайней мере, иметь образец для начала: http://msdn.microsoft.com/en-us/library/x6c1kb0s%28v=vs.110%29.aspx –

+0

Спасибо за ваши ответы. Я редактировал сообщение, чтобы включить XML-файл. Я знаю о xsd.exe, и я могу использовать это для этой цели, но поскольку у меня есть проект, работающий в тегах, мне нужно сделать это таким же образом. Благодаря! – RonaDona

ответ

1

Вы должны иметь класс Item, и класс эскизов, больше как это:

public class item { 
    [XmlElement("thumbnail")] 
    public thumbnail thumbnail {get;set;} 
} 

public class thumbnail 
{ 
    [XmlElement("url")] 
    public string url { get; set; } 

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

    [XmlElement("height")] 
    public string height { get; set; } 
} 
+0

Ты мужчина. Большое спасибо, это сработало! – RonaDona