我正在尝试将一段(可能)格式错误的HTML加载到XMLDocument对象中,但它因XMLExceptions而失败...因为有额外的打开/关闭标记以及格式错误的XML标记,例如<img >
而不是<img />
如何使用数据中的所有错误来解析XML?在解析之前是否可以应用任何XML验证器来纠正这些错误?或者会处理异常解析什么可以解析?
答案 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