将 XML 反序列化为简单的单个数组
Deserialize XML into simple single array
我需要将 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>
我已经为要反序列化为
的对象创建了class
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 标记,但我不太清楚自己在做什么,所以我将其全部删除以避免 public 尴尬。感谢您的任何输入。
看来,您要反序列化的对象与您的xml 文件不完全兼容。因此,在这种情况下,使用 Linq to xml 解决方案可能会更灵活。
var xDocument = XDocument.Parse(xml);
var categoryList = xDocument.Descendants("fields").Select(x => new Category
{
Name = x.Element("name").Value,
Id = int.Parse(x.Element("id").Value)
});
我需要将 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>
我已经为要反序列化为
的对象创建了classpublic 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 标记,但我不太清楚自己在做什么,所以我将其全部删除以避免 public 尴尬。感谢您的任何输入。
看来,您要反序列化的对象与您的xml 文件不完全兼容。因此,在这种情况下,使用 Linq to xml 解决方案可能会更灵活。
var xDocument = XDocument.Parse(xml);
var categoryList = xDocument.Descendants("fields").Select(x => new Category
{
Name = x.Element("name").Value,
Id = int.Parse(x.Element("id").Value)
});