解析格式错误的XML

时间:2009-06-15 14:52:10

标签: c# xml parsing xmldocument xml-parsing

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

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

6 个答案:

答案 0 :(得分:15)

HTML Agility Pack将解析html而不是xhtml,并且非常宽容。如果您使用XmlDocument,那么对象模型将会很熟悉。

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

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

如果您只是处理HTML,可以使用HTML Agility Pack,这可能符合您的目的。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

你要做的事情非常困难。 HTML无法使用XML解析器进行解析,因为XML是严格的而HTML则不是。如果该HTML符合XHTML(HTML as XML),则XML解析器将解析HTML而不会出现问题。

如果你真的想使用HTML解析器来制作HTML,你可能想知道是否有任何HTML到XHTML转换器。

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

答案 5 :(得分:0)

您无法将格式错误的XML加载到XmlDocument

查看CodePlex上的Html Agility Pack