2009-06-15 95 views
6

我试图将一块(可能)格式错误的HTML加载到XMLDocument对象中,但它与XMLExceptions一起失败......因为存在额外的开启/关闭标签以及格式错误的XML标签,例如<img ><img />解析格式不正确的XML

如何获取XML以解析数据中的所有错误?在解析之前是否有任何XML验证器可以应用,以纠正这些错误?或者会处理异常解析什么可以解析?

+0

我会去处理例外,并尝试如果你有一个畸形的想法... – abmv 2009-06-15 14:59:08

+0

如果它格式不正确,它会引发发脾气(XMLException),并不会解析它!没有childNodes存在。 – 2009-06-15 15:02:43

回答

14

HTML Agility Pack将解析html,而不是xhtml,而且相当宽容。如果您使用了XmlDocument,则该对象模型将很熟悉。

0

你想要做什么是非常困难的。 HTML不能使用XML解析器进行分析,因为XML是严格的,而HTML不是。如果该HTML符合XHTML(HTML as XML),那么XML解析器将解析HTML而不会造成问题。

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

换句话说,我还没有遇到一个处理畸形XML的XML解析器,就不是设计成接受宽松的标记,如HTML(有很好的理由,太:))

2

您可能想查看this question的答案。

基本上,在美丽的.NET端口和HTML敏捷包之间有一个方法。

1

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

但是,您怀疑您可以用XmlReader来解析它。如果遇到某些令人震惊的错误,它仍可能会引发异常,但根据MSDN文档,它至少可以披露错误的位置。

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

0

无法将格式不正确的XML加载到XmlDocument中。

在CodePlex上

1

退房的Html Agility Pack取决于ONT他的特定需求,那么您可以使用HTML Tidy清理文件,然后使用XMLDocument对象导入。

相关问题