2013-04-15 24 views
1

我有這樣定義的類如下:通過設置XmlRoot從序列化的xml流仍然拋出異常

[XmlRoot(ElementName="state_territories")] 
public class Location 
{ 
    ... 
} 

我正在檢索XML(從流拉出,並用作家寫入調試器)是:

<?xml version='1.0' encoding='utf-8' ?><state_territories>...</state_territories> 

然而,當我試圖序列我的XML響應,如:

var serializer = new DataContractSerializer(typeof(Location)); 
Locations = serializer.ReadObject(response.GetResponseStream()) as Location; 

我收到以下異常:

「從命名空間 'http://schemas.datacontract.org/2004/07/App.Data.Territories' 期待元素 '位置'。 遇到「元素」名爲「state_territories」,命名空間'。」

我可能失去了一些東西簡單,但我想,如果我定義了XmlRoot,這將覆蓋推斷的根元素位置。 ?

任何想法

回答

1

[XmlRoot(...)]僅由XmlSerializer處理:

var serializer = new XmlSerializer(typeof(Location)); 
Locations = (Location) serializer.Deserialize(response.GetResponseStream()); 

如果你正在處理REGUL ar xml,你需要控制名稱/屬性等,那麼XmlSerializer是最好的選擇; DataContractSerializer只提供對xml映射的最小控制。

相關問題