HTML Agility Pack - 只能從文件系統加載xml文檔,而不能從Web加載

.net c# html-agility-pack scrape

我之前成功使用過HAP,從網上下載xhtml頁面。但是,現在我正在嘗試加載和解析xml文檔。 HAP只會加載位於我的文件系統上的xml文檔,例如“C:\ xml \ MyXml.xml”。它不會從Web(http://www.web.com/doc.xml)加載它。使用Fiddler,我可以看到HAP實際上是通過Web請求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命名空間,如Sebastian的回答所示。

如果您確實需要操作此類文檔的HTML結構,則需要自己下載XML,使用System.Xml應用XSLT生成生成的HTML,然後再嘗試使用HAP解析它。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因