2014-02-06 5 views
0

это может быть глупый noobish вопрос, но, пожалуйста, медведь со мной =)Могу ли я десериализации XML непосредственно в список

В моей программе я получаю кусок XML что-то похожее на это:

<markers> 
     <marker id="35" name="Test1" address="anyway123" type="event"/> 
     <marker id="370" name="Test2" address="" type="event"/> 
     <marker id="251" name="Test3" address="somewhere 1337" type="com"/> 
</markers> 

то, что я хочу знать, если есть способ, чтобы иметь класс, содержащий вроде что-то вроде этого:

private int id; 
private string name; 
private string address; 
private string type; 

public int Id { 
    get { 
     return id; 
    } 
    set { 
     id = value; 
    } 
} 
public string Name { 
    get { 
     return name; 
    } 
    set { 
     name = value; 
    } 
} 
public string Address { 
    get { 
     return address; 
    } 
    set { 
     address = value; 
    } 
} 
public string Type { 
    get { 
     return type; 
    } 
    set { 
     type = value; 
    } 
} 

Назовём его «EventClass», а затем просто идти, как:

Могу ли я тогда просто пойти что-то вроде этого: Список EventList = «XMLStuff»

И если да, то что бы XML материал влечет за собой? XD

С уважением, -Logan =)

+0

Да, вы можете. И вы знаете, как мир, который вы ищете, называется: Deserializer. – MarcinJuraszek

+0

О, я добрался до руки (совсем немного), но я не встретил этого, ты прав, это дура. Есть ли способ отметить это как таковое? – Logan

ответ

1

Вы можете использовать стандартный XmlSerializer, если вы готовы сделать несколько изменений в классе:

  • XML чувствителен к регистру, так что вы должны использовать имена строчных для свойств (id, name и т.д.
  • создать содержащий класс с массивом вашего класса
  • данных Добавьте атрибут [XmlRoot("markers")] для содержащего класса
  • Добавьте атрибут [XmlElement("marker")] к свойству массива

Что-то вроде этого:

[XmlRoot("markers")] 
public class EventList 
{ 
    [XmlElement("marker")] 
    public List<EventClass> EventClasses {get; set;} 
} 


public class EventClass 
{ 
    public int id {get; set;} 
    public string name {get; set;} 
    public string address {get; set;} 
    public string type {get; set;} 
} 
Смежные вопросы