2
我想反序列化一個XML文檔,我從第三方Web服務中抽取我無法控制的數據,它們只以XML形式發送數據 - 它看起來像下面這樣:嘗試反序列化XML數組
<?xml version="1.0" encoding="utf-8"?>
<GameArray xmlns="http://foo.bar">
<Game>
<Id>int</Id>
<Title>string</Title>
</Game>
<Game>
<Id>int</Id>
<Title>string</Title>
</Game>
</GameArray>
我有我的課看起來像這樣:
public class GamesModel
{
[XmlArray("GameArray")]
[XmlArrayItem("Game")]
public List<Game> GameList { get; set; }
public GamesModel ToXml()
{
var request =
WebRequest.Create(
"http://foo.bar/GetGames") as
HttpWebRequest;
var xRoot = new XmlRootAttribute
{
ElementName = "GameArray",
Namespace = "http://foo.bar",
IsNullable = true
};
var ser = new XmlSerializer(typeof(GamesModel), xRoot);
var response = request.GetResponse();
var result = ser.Deserialize(response.GetResponseStream());
return (GamesModel)result;
}
}
public class Game
{
[XmlElement("Id")]
public int Id { get; set; }
[XmlElement("Title")]
public string Title{ get; set; }
}
在我控制我有這樣的設置:
[HttpGet]
public ActionResult GetGames()
{
var xboxGames = new GamesModel();
return Content(GamesModel.ToXml().ToString(), "text/xml");
}
然後在我看來,我有一些HTML與我想它來調用這個在click事件的按鈕 - 所以我的jQuery看起來像這樣
$('.testTag').click(function() {
$.ajax({
type: "GET",
url: "/Home/GetGames",
dataType: "xml/text",
success: function(xml) {
//dostuff
}
});
});
我打的服務器就好上了這一切,但是在我去序列化的行中出現錯誤。錯誤是:
{"There is an error in XML document (2, 2)."}
而且是的InnerException:
{"<GameArray xmlns='http://foo.bar/'> was not expected."}
我一直在敲打我在這頭幾個小時試圖找出什麼,我需要做的。
我想我跟着你一些在這裏 - 但究竟是指可變數據流? – Eldorian
@Eldorian任何流,FileStream,NetworkStream等你的'response.GetResponseStream()'很好。 –
謝謝 - 所以我將代碼更改爲您所建議的內容,並且在嘗試反序列化時仍然收到同樣的錯誤 – Eldorian