Тот факт, что URL содержит «.xml», не означает, что сервер предоставит вам XML. В случае URL, который вы указали в своем примере, сервер испускает XHTML. (Я также не вижу директивы обработки xml-stylesheet
, которую вы упомянули в своем комментарии в этом файле, что заставляет меня задуматься, рассматриваете ли вы две разные вещи.) На стороне клиента вы ничего не можете сделать, чтобы это изменить. Если есть способ сформулировать URL для получения необработанного XML с сервера, на этом сайте это не задокументировано.
Кажется, они также обслуживают XHTML, который не является правильно сформированным XML (судя по тому, что происходит, когда вы пытаетесь его проанализировать). Это не очень мило с их стороны.
Edit:
Хорошо, поэтому виновник в том, что этот сайт, очевидно, проверяет пользовательский агент, чтобы определить, должен ли он отправлять XML или HTML. Ответ здесь (ну почему, молитесь, разве Мартин Хоннен в StackOverflow?) Показывает, как это сделать:
string url = "http://eu.wowarmory.com/character-sheet.xml?r=Stormreaver&n=Sebassis";
HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(url);
httpRequest.UserAgent = @"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
using (HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse())
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(httpResponse.GetResponseStream());
Console.Write(xmlDocument.OuterXml);
}
Я бы хотел рассказать вам, почему они это делают, и почему этот пользовательский агент работает, а другие нет, но это немного выходит за рамки моей компетенции. Может быть, кто-то еще может пролить свет на это.