C# 反序列化根为列表的XML文档
我有一个外部提供给我的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 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());