HTML Agility Pack - 只能从文件系统加载 xml 文档,不能从 Web 加载
我之前已经成功使用过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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您只使用 XML(而不是 (X)HTML),那么您不需要使用 HAP,因为 .Net 内置了全面的 XML 处理:
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:
我假设您正在使用 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.