2014-02-06 44 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; 
    } 
} 

讓我們把它稱爲「事件類」,然後簡單地去,如:

我能那麼簡單地去是這樣的: 名單EVENTLIST =「XMLStuff」

,如果是,你會XML的東西意味着什麼?的xD

問候, -Logan =)

+0

是的,可以。而且你知道你正在尋找的和平是如何命名的:解串器。 – MarcinJuraszek

+0

噢,我用手搜索了一下(相當多),但我沒有遇到那個,你說得對,這是一個dup。有什麼辦法可以標記它嗎? – Logan

回答

1

您可以使用標準的XmlSerializer,如果你願意做一些修改到類:

  • XML是大小寫敏感的,所以你應該使用小寫名稱爲您的性質(idname
  • 創建一個包含類數據類
  • 陣列添加屬性[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;} 
}