我需要将XML反序列化为一个简单的对象数组,但无法弄清楚如何执行它 . 这是我简化的XML:
<?xml version="1.0" encoding="Windows-1250"?>
<document>
<datasets>
<dataset0>
<rows>
<row>
<fields>
<id>1</id>
<name>Cat1</name>
</fields>
</row>
<row>
<fields>
<id>2</id>
<name>Cat2</name>
</fields>
</row>
</rows>
</dataset0>
</datasets>
</document>
我已经为要反序列化的对象创建了类
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
}
和反序列化代码
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Category[]), new XmlRootAttribute("rows"));
using (FileStream myFileStream = categoryFile.OpenRead())
{
var categoryArray = (Category[])xmlSerializer.Deserialize(myFileStream);
}
这显然不起作用,我已经尝试了各种XmlElement和XmlRoot标签,但我不太清楚我在做什么,所以我把所有这些都剥掉了以避免公开尴尬 . 感谢您的任何意见 .
1 回答
看来,要反序列化的对象与xml文件没有完全兼容性 . 因此,在这种情况下,使用Linq到xml解决方案可能更灵活 .