HTML Agility Pack - может загружать только XML-документ из файловой системы, а не из Интернета

.net c# html-agility-pack scrape

Вопрос

Раньше я использовал HAP, загружая xhtml-страницы из Интернета. Однако теперь я пытаюсь загрузить и проанализировать XML-документы. HAP загружает только XML-документы, которые находятся в моей файловой системе, например, «C: \ xml \ MyXml.xml». Он не будет загружать его из Интернета (http://www.web.com/doc.xml). Используя Fiddler, я вижу, что HAP фактически запрашивает XML-документы через Интернет, а сервер также отвечает XML-документом. Тем не менее, он останавливается, ничего не анализируется. HtmlDocument пуст, нет ChildNodes или что-то еще. При загрузке из файловой системы он успешно обрабатывается в HtmlDocument.

Есть идеи?

Принятый ответ

Если вы используете только XML (а не (X) HTML), вам не нужно использовать HAP, поскольку .NET имеет встроенную обработку XML:

String PostUrl = "http://www.web.com/doc.xml"; 
WebResponse webResponse = WebRequest.Create(PostUrl).GetResponse();
StreamReader sr = new StreamReader(webResponse.GetResponseStream());

String Result = sr.ReadToEnd().Trim();

XmlDocument xdoc = new XmlDocument(); xdoc.LoadXml(Result);

Популярные ответы

Я предполагаю, что вы используете HAP, потому что XML, который вы пытаетесь проанализировать, указывает таблицу стилей XSL, чтобы преобразовать ее в (X) HTML, который вы тогда хотите каким-то образом манипулировать?

Если это не так, и вас просто интересует необработанная структура XML, то используйте .Net встроенные пространства имен XmlDocument и System.Xml, как предлагает ответ Себастьяна.

Если вам действительно нужно манипулировать структурой HTML такого документа, вам нужно будет загрузить XML самостоятельно, примените XSLT с помощью System.Xml чтобы сгенерировать полученный HTML-код, прежде чем пытаться проанализировать это с помощью HAP.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow