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