HTML Agility Pack: può caricare solo documenti xml dal file system, non dal web

.net c# html-agility-pack scrape

Domanda

Ho usato HAP con successo prima, scaricando le pagine xhtml dal web. Tuttavia, ora sto cercando di caricare e analizzare i documenti xml. HAP caricherà solo documenti xml che si trovano sul mio file system, "C: \ xml \ MyXml.xml" per esempio. Non lo caricherà dal web (http://www.web.com/doc.xml). Usando Fiddler, posso vedere che HAP sta effettivamente richiedendo i documenti xml sul web e anche il server risponde con il documento xml. Tuttavia, si ferma lì, niente viene analizzato. HtmlDocument è vuoto, nessun ChildNode o altro. Durante il caricamento dal file system, viene analizzato correttamente in un oggetto HtmlDocument.

Qualche idea?

Risposta accettata

Se si utilizza solo XML (e non (X) HTML), non è necessario utilizzare HAP come .Net ha un'elaborazione XML completa integrata:

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

Risposta popolare

Presumo che tu stia usando HAP perché l'XML che stai cercando di analizzare specifica un foglio di stile XSL per trasformarlo in (X) HTML che poi vuoi manipolare in qualche modo?

Se questo non è il caso e sei solo interessato alla struttura XML di base, utilizza gli spazi dei nomi .Net creati da XmlDocument e System.Xml come suggerisce la risposta di Sebastian.

Se è effettivamente necessario manipolare la struttura HTML di tale documento, sarà necessario scaricare l'XML da sé, applicare XSLT utilizzando System.Xml per generare l'HTML risultante prima di tentare quindi di analizzarlo con HAP.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché