我可以直接将xml反序列化为List

时间:2014-02-06 02:14:29

标签: c# restsharp xml-deserialization

这可能是一个愚蠢的noobish问题,但请耐心等待我=)

在我的程序中,我收到一段类似于此的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 =)

1 个答案:

答案 0 :(得分: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;}
}