C# 反序列化根为列表的XML文档

C# 反序列化根为列表的XML文档,c#,xml,xml-serialization,C#,Xml,Xml Serialization,我有一个外部提供给我的XML文档,需要导入到我的应用程序中。这份文件写得很糟糕,但我实在无能为力 <?xml version="1.0" encoding="iso-8859-1"?> <xml> <Items> <Property1 /> <Property2 /> ... </Items> <Items> <Prop

我有一个外部提供给我的XML文档,需要导入到我的应用程序中。这份文件写得很糟糕,但我实在无能为力

<?xml version="1.0" encoding="iso-8859-1"?>
<xml>
    <Items>
        <Property1 />
        <Property2 />
        ...
    </Items>
    <Items>
        <Property1 />
        <Property2 />
        ...
    </Items>
    ...
</xml>

XML的根不是列表,XML的根是
节点
我想您只是被它的名称弄糊涂了:)

请访问以下链接,它有许多人投票选出的好答案

以下是链接:

只需去掉名称空间=:

[XmlRoot("xml"), XmlType("xml")] 
public class RegisterAccountResponse {...}

假设您有一个类
映射到每个
节点:

public class Items
{
    public string Property1 { get; set; }
    public string Property2 { get; set; }
}
您可以按如下方式反序列化
项列表

var doc = XDocument.Parse(
    @"<?xml version=""1.0"" encoding=""iso-8859-1""?>
    <xml>
        <Items>
            <Property1 />
            <Property2 />
        </Items>
        <Items>
            <Property1 />
            <Property2 />
        </Items>
    </xml>");
var serializer = new XmlSerializer(typeof(List<Items>), new XmlRootAttribute("xml"));
List<Items> list = (List<Items>)serializer.Deserialize(doc.CreateReader());
var doc=XDocument.Parse(
@"
");
var serializer=newxmlserializer(typeof(List),newxmlrootattribute(“xml”);
List=(List)序列化程序。反序列化(doc.CreateReader());

可以在
下添加节点
,并在此节点中添加所有
。由于您正在序列化它,希望是您必须对其进行反序列化。我的意思是,如果您确实需要此表单,您可以在反序列化后将XML更改回真实(错误)结构。我正在获取提供给我的此XML,以反序列化它并将数据添加到我的应用程序中。我没有将数据序列化为XML。我不希望在反序列化文档之前对其进行任何更改。您可以共享您的C代码吗?我的XML的根目录是类型项列表。正如我所说,文档写得很糟糕。我认为xml中不可能有多个根元素。@冯,请查看下面的答案,如果我错了,请告诉我。谢谢“只是为了学习。”Tauseef,很难评论,因为您没有提供实现。尝试编写一些代码或修改您的答案解决OP问题的链接将是一个很好的学习方法:):)谢谢,xml是否真的具有根节点
,正如您的代码所说的
新XmlRootAttribute(“xml”)
。意味着只有一个根,而不是一个列表?是的,他把他的密码贴在我的邮箱上了。
var doc = XDocument.Parse(
    @"<?xml version=""1.0"" encoding=""iso-8859-1""?>
    <xml>
        <Items>
            <Property1 />
            <Property2 />
        </Items>
        <Items>
            <Property1 />
            <Property2 />
        </Items>
    </xml>");
var serializer = new XmlSerializer(typeof(List<Items>), new XmlRootAttribute("xml"));
List<Items> list = (List<Items>)serializer.Deserialize(doc.CreateReader());