我正在尝试反序列化一个来自第三方网络服务的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代码和一个按钮,我希望它在点击事件上调用这个函数 - 所以我的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)."}
内部异常是:
{"<GameArray xmlns='http://foo.bar/'> was not expected."}
我已经花费了数小时来解决这个问题,但还是摸不着头脑。
response.GetResponseStream()
很好。 - L.B