Я пытаюсь десериализация документа XML, который я вытягивать из веба-службы третьей стороны, что я не имею никакого контроля над и они только отправлять данные в виде XML - это выглядит следующим образом:Попытка Deserialize массиву 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)."}
И InnerException является:
{"<GameArray xmlns='http://foo.bar/'> was not expected."}
Я стучал головой на это в течение нескольких часов, пытаясь выяснить, что мне нужно сделать.
Я думаю, что я следую вам некоторые здесь - но то, что переменная потока в виду? – Eldorian
@ Eldorian любой поток, FileStream, NetworkStream и т. Д. Ваш 'response.GetResponseStream()' в порядке. –
Спасибо, поэтому я изменил код на то, что вы предложили, и я все еще получаю ту же ошибку, когда он пытается десериализовать. – Eldorian