HTML Agility Pack - Ne peut charger un document XML qu'à partir du système de fichiers, pas du Web

.net c# html-agility-pack scrape

Question

J'ai déjà utilisé HAP avec succès auparavant, en téléchargeant des pages xhtml à partir du Web. Cependant, j'essaie maintenant de charger et d'analyser des documents XML. HAP ne chargera que les documents xml situés sur mon système de fichiers, "C: \ xml \ MyXml.xml" par exemple. Il ne le chargera pas à partir du Web (http://www.web.com/doc.xml). En utilisant Fiddler, je constate que HAP demande les documents XML sur le Web et que le serveur répond également par le document XML. Cependant, ça s'arrête là, rien n'est analysé. Le document HTML est vide, pas de ChildNodes ou quoi que ce soit. Lors du chargement à partir du système de fichiers, il est analysé avec succès dans un document HTML.

Des idées?

Réponse acceptée

Si vous utilisez uniquement le code XML (et non (X) HTML), vous n'avez pas besoin d'utiliser HAP, car. Net dispose d'un traitement XML complet intégré:

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);

Réponse populaire

Je suppose que vous utilisez HAP parce que le XML que vous essayez d'analyser spécifie une feuille de style XSL à transformer en (X) HTML que vous souhaitez ensuite manipuler?

Si ce n'est pas le cas et que vous êtes simplement intéressé par la structure XML brute, utilisez les espaces de noms XmlDocument et System.Xml intégrés de .Net, comme le suggère la réponse de Sebastian.

Si vous devez réellement manipuler la structure HTML d'un tel document, vous devrez également télécharger le fichier XML, appliquez le XSLT à l'aide de System.Xml pour générer le code HTML résultant avant de tenter de l'analyser avec HAP.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi