2
我试图反序列化下面的XML文档:反序列化与空收集XMLSERIALIZE结果的集合
<?xml version="1.0" encoding="utf-8" ?>
<TestPrice>
<Price>
<A>A</A>
<B>B</B>
<C>C</C>
<Intervals>
<Interval>
<A>A</A>
<B>B</B>
<C>C</C>
</Interval>
<Interval>
<A>A</A>
<B>B</B>
<C>C</C>
</Interval>
</Intervals>
</Price>
</TestPrice>
我有三个类定义为反序列化为一个对象图这样的:
public class TestPrice
{
private List<Price> _prices = new List<Price>();
public List<Price> Price
{
get { return _prices; }
set { _prices = value; }
}
}
public class Price
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
private List<Interval> _intervals = new List<Interval>();
public List<Interval> Intervals
{
get { return _intervals; }
set { _intervals = value; }
}
}
public class Interval
{
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
}
我可以反序列化每个部分。也就是说,我可以这样做:
var serializer = new XmlSerializer(typeof(Price));
var priceEntity = ((Price)(serializer.Deserialize(XmlReader.Create(stringReader))));
而且priceEntity
正确地包含在stringReader
XML数据,包括List<Interval> Intervals
初始化。但是,如果我试图反序列化TestPrice
实例,它总是会出现一个空的List<Price> Price
。
如果我改变的TestPrice
这样的定义:
public class TestPrice
{
public Price Price { get; set; }
}
它的工作原理。但当然我的XSD将Price定义为一个序列。我有其他实体反序列化正确,但它们不包含根元素中的序列。有没有我不知道的限制?我应该在TestPrice
中包含某种元数据吗?
我装饰价格集合建议和执行你的例子。我仍然收回一个空的价格收集。顺便说一句,为什么你将一个新的XmlReader实例传递给串行器,而不是你已经在xmlReader中的那个? – Cesar 2012-01-11 21:59:06
@塞萨尔,对不起,这是读者的错误。我已经修复了我的示例。它现在应该工作。 – 2012-01-11 22:00:08
有趣,我运行你完全相同的代码,它的工作原理。但是如果我将它适应于我的实际代码,我仍然会得到相同的结果。无论如何,至少我知道它应该起作用,所以我将其标记为已接受。谢谢! – Cesar 2012-01-11 22:14:22