C# 用C.NET3.5实现XML反序列化

C# 用C.NET3.5实现XML反序列化,c#,asp.net,xml,serialization,C#,Asp.net,Xml,Serialization,我有这个XML文件 <?xml version="1.0" standalone="yes"?> <Root> <Object> <referenceName>People</referenceName> <query>select * from people</query> </Object> <Object> &l

我有这个XML文件

<?xml version="1.0" standalone="yes"?>
<Root>
    <Object>
        <referenceName>People</referenceName>
        <query>select * from people</query>
    </Object>
    <Object>
        <referenceName>Countries</referenceName>
        <query>select * from countries</query>
    </Object>
</Root>
我需要用C转换成一个对象

我不知道怎么做。 请注意,我可以在xml文件中有很多对象

我知道我必须使用[XMLArray…”


感谢使用开始。一旦你有了这些,如果需要,调整生成的类并使用反序列化回到运行时对象中。

这里最简单的技巧是在VS命令行:

xsd example.xml
xsd example.xsd /classes
Et voila;示例C中的一个example.cs文件显示了如何通过XmlSerializer从.NET对象获取xml

在这种情况下,我希望以下方法可以奏效:

public class Root
{
    [XmlElement("Object")]
    public List<SomeOtherObject> Objects { get; set; }
}

public class SomeOtherObject
{
    [XmlElement("referenceName")]
    public string Name { get; set; }
    [XmlElement("query")]
    public string Query { get; set; }
}
实际上,这里没有[XmlArray]的用法……请参见答案中的示例。
XmlSerializer ser = new XmlSerializer(typeof(Root));
using (XmlReader reader = XmlReader.Create(
    new StringReader(xml)))
{
    var obj = (Root)ser.Deserialize(reader);
    // use obj
}