7

我正在尝试将一段(可能)格式错误的 HTML 加载到 XMLDocument 对象中,但它因 XMLExceptions 而失败......因为有额外的打开/关闭标签和格式错误的 XML 标签,例如<img >而不是<img />

如何让 XML 解析数据中的所有错误?在解析之前是否可以应用任何 XML 验证器来纠正这些错误?还是会处理异常解析任何可以解析的东西?

4

6 回答 6

15

HTML Agility Pack将解析 html,而不是 xhtml,并且非常宽容。如果您使用过XmlDocument.

于 2009-06-15T14:56:38.830 回答
2

您可能想查看这个问题的答案。

基本上在beautifulsoup 的.NET 端口和HTML 敏捷包之间有一种方法。

于 2009-06-15T14:56:54.697 回答
1

您不太可能构建具有这种格式错误结构的 XmlDocument。XmlDocument(据我所知)要求 xml 内容遵守正确的嵌套和闭包语法。

但是,您怀疑您可以使用 XmlReader 来解析它。如果遇到某些严重错误,它仍然可能抛出异常,但根据 MSDN 文档,它至少可以披露错误的位置。

如果您只是处理 HTML,那么HTML Agility Pack可以满足您的目的。

于 2009-06-15T14:57:32.120 回答
1

根据具体需要,您可以使用HTML Tidy清理文档,然后使用 XMLDocument 对象将其导入。

于 2009-06-15T15:00:17.480 回答
0

你想做的事情非常困难。无法使用 XML 解析器解析 HTML,因为 XML 是严格的,而 HTML 不是。如果该 HTML 符合 XHTML(HTML 作为 XML),那么 XML 解析器将毫无问题地解析 HTML。

如果您真的想为 HTML 使用 XML 解析器,您可能想看看是否有任何 HTML 到 XHTML 转换器。

换句话说,我还没有遇到一个处理格式错误的 XML 的 XML 解析器......它们的设计目的不是接受像 HTML 这样的松散标记(也有充分的理由:))

于 2009-06-15T14:56:17.693 回答
0

您不能将格式错误的 XML 加载到XmlDocument.

查看CodePlex 上的Html Agility Pack

于 2009-06-15T14:58:12.243 回答