HTML Agility Pack - 只能从文件系统加载 xml 文档,不能从 Web 加载

发布于 2024-10-11 05:11:02 字数 307 浏览 7 评论 0原文

我之前已经成功使用过HAP,从网络下载xhtml页面。但是,现在我正在尝试加载和解析 xml 文档。 HAP 将仅加载位于我的文件系统上的 xml 文档,例如“C:\xml\MyXml.xml”。它不会从网络(http://www.web.com/doc.xml)加载它。使用 Fiddler,我可以看到 HAP 实际上正在通过 Web 请求 xml 文档,并且服务器也以 xml 文档进行响应。然而,它就停在那里,没有解析任何东西。 HtmlDocument 是空的,没有 ChildNodes 或任何东西。从文件系统加载时,它成功解析为 HtmlDocument。

有什么想法吗?

I've used HAP successfully before, downloading xhtml pages from web. However, now I'm trying to load and parse xml documents. HAP will only load xml documents that are located on my file system, "C:\xml\MyXml.xml" for instance. It will not load it from web (http://www.web.com/doc.xml). Using Fiddler, I can see that HAP is actually requesting the xml documents over the web, and the server also responds with the xml document. However, it stops there, nothing get parsed. The HtmlDocument is empty, no ChildNodes or anything. When loading from file system, it get parsed successfully to a HtmlDocument.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

征﹌骨岁月お 2024-10-18 05:11:02

如果您只使用 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);

If you are using just the XML (and not (X)HTML) then you don't need to use HAP as .Net has comprehensive XML processing built in:

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);
那一片橙海, 2024-10-18 05:11:02

我假设您正在使用 HAP,因为您尝试解析的 XML 指定了一个 XSL 样式表以将其转换为 (X)HTML,然后您想以某种方式对其进行操作?

如果情况并非如此,并且您只对原始 XML 结构感兴趣,那么请使用 .Net 内置的 XmlDocument 和 System.Xml 命名空间,正如 Sebastian 的答案所建议的那样。

如果您确实需要操作此类文档的 HTML 结构,则需要自己下载 XML,使用 System.Xml 应用 XSLT 来生成结果 HTML,然后再尝试使用 HAP 对其进行解析。

I assume you are using HAP because the XML you are trying to parse specifies a XSL stylesheet to transform it to (X)HTML which you then want to manipulate in some way?

If this isn't the case and you are just interested in the raw XML structure then use .Net's built in XmlDocument and System.Xml namespaces as Sebastian's answer suggests.

If you actually need to manipulate the HTML structure of such a document you will need to download the XML yourself, apply the XSLT using System.Xml to generate the resulting HTML before then attempting to parse this with HAP.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文