«Произошла ошибка при разборе EntityName» при загрузке XmlDocument - PullRequest
1 голос
/ 26 сентября 2011

Я написал некоторый код для разбора RSS-каналов для приложения ASP.NET C #, и он прекрасно работает для всех RSS-каналов, которые я пробовал, пока не попробовал Facebook.

Мой код завершается с ошибкой в ​​последней строкениже ...

WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
Stream rss = response.GetResponseStream();
XmlDocument xml = new XmlDocument();
xml.Load(rss);

... с ошибкой "Произошла ошибка при синтаксическом анализе EntityName. Строка 12, позиция 53."

Трудно понять, что происходитположение файла XML, поскольку весь файл находится в одной строке, но это прямо из Facebook, и все символы выглядят правильно закодированными, за исключением, возможно, одного символа (♥).

Я не особо хочуперепишите мой анализатор RSS, чтобы использовать другой метод.Любые предложения о том, как обойти эту ошибку?Есть ли способ отключить проверку файла?

1 Ответ

1 голос
/ 26 сентября 2011

Посмотрите на скачанный поток.Он не содержит RSS-канал, но содержит HTML-страницу с сообщением о несовместимом браузере.Это происходит потому, что при загрузке URL-адреса, подобного этому, заголовок пользовательского агента не устанавливаетсяЕсли вы сделаете это, ваш код должен работать:

var request = (HttpWebRequest)WebRequest.Create(url);
request.UserAgent = "MyApplication";

var xml = new XmlDocument();

using (var response = request.GetResponse())
using (var rss = response.GetResponseStream())
{
    xml.Load(rss);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...