我正在尝试将一段(可能)格式错误的 HTML 加载到 XMLDocument 对象中,但它因 XMLExceptions 而失败......因为有额外的打开/关闭标签和格式错误的 XML 标签,例如<img >
而不是<img />
如何让 XML 解析数据中的所有错误?在解析之前是否可以应用任何 XML 验证器来纠正这些错误?还是会处理异常解析任何可以解析的东西?
我正在尝试将一段(可能)格式错误的 HTML 加载到 XMLDocument 对象中,但它因 XMLExceptions 而失败......因为有额外的打开/关闭标签和格式错误的 XML 标签,例如<img >
而不是<img />
如何让 XML 解析数据中的所有错误?在解析之前是否可以应用任何 XML 验证器来纠正这些错误?还是会处理异常解析任何可以解析的东西?
HTML Agility Pack将解析 html,而不是 xhtml,并且非常宽容。如果您使用过XmlDocument
.
您可能想查看这个问题的答案。
基本上在beautifulsoup 的.NET 端口和HTML 敏捷包之间有一种方法。
您不太可能构建具有这种格式错误结构的 XmlDocument。XmlDocument(据我所知)要求 xml 内容遵守正确的嵌套和闭包语法。
但是,您怀疑您可以使用 XmlReader 来解析它。如果遇到某些严重错误,它仍然可能抛出异常,但根据 MSDN 文档,它至少可以披露错误的位置。
如果您只是处理 HTML,那么HTML Agility Pack可以满足您的目的。
根据具体需要,您可以使用HTML Tidy清理文档,然后使用 XMLDocument 对象将其导入。
你想做的事情非常困难。无法使用 XML 解析器解析 HTML,因为 XML 是严格的,而 HTML 不是。如果该 HTML 符合 XHTML(HTML 作为 XML),那么 XML 解析器将毫无问题地解析 HTML。
如果您真的想为 HTML 使用 XML 解析器,您可能想看看是否有任何 HTML 到 XHTML 转换器。
换句话说,我还没有遇到一个处理格式错误的 XML 的 XML 解析器......它们的设计目的不是接受像 HTML 这样的松散标记(也有充分的理由:))
您不能将格式错误的 XML 加载到XmlDocument
.
查看CodePlex 上的Html Agility Pack