【发布时间】:2018-12-04 20:06:47
【问题描述】:
我有如下 XML:
<feed>
<products>
<product>
</product>
.
.
.
<product>
</product>
</products>
</feed>
我可以使用以下方法反序列化 xml:
public class feed
{
public ProductList products { get; set; }
}
public class ProductList
{
[XmlElement("product")]
public List<Product> Products { get; set; }
}
var result = (feed)new XmlSerializer(typeof(feed)).Deserialize(xmlReader);
我以为我可以使用XML根属性来控制反序列化,即,
class Products
{
public List<Product> Products { get; set; }
}
var rootAtrr = new XmlRootAttribute("products");
var result = (Products)new XmlSerializer(typeof(Products), rootAtrr).Deserialize(xmlReader);
或者更好:
var result = (List<Product>)new XmlSerializer(typeof(List<Product>), rootAtrr).Deserialize(xmlReader);
以上所有更改均无效。
这是否意味着根属性专门用于 XML 中的 ACTUAL 根元素而不是从哪里开始阅读?
另外,这是否意味着 XML 文档强制定义什么模型类?在这种特殊情况下feed 类?
或者我错过了 1 分还是 3 分?
【问题讨论】:
标签: c# xmlserializer xml-deserialization