我过去曾使用HtmlAgilityPack来解析.Net中的HTML,但我不喜欢它只使用DOM模型的事实。
在大型文档和/或嵌套级别较高的文档上,可能会遇到堆栈溢出或内存不足异常。通常,基于DOM的解析模型比基于流的方法使用更多的内存,通常是因为想要使用HTML的进程可能只需要一些元素一次可用。
有没有人知道.Net的一个像样的HTML解析器允许你以类似于XmlReader
类的方式解析HTML?即以前向仅流媒体方式
答案 0 :(得分:5)
我通常使用SgmlReader:https://github.com/MindTouch/SGMLReader
正如其他人所说,有些问题是HTML不遵循相同的格式良好的XML规则,因此它本身很难解析,但SgmlReader通常做得非常好。
答案 1 :(得分:1)
问题是HTML可能格式不正确。在解析文档的大部分内容之前,您无法知道哪个标记缺少结束标记(或哪些标记的放置顺序不正确)。
如果您要解析的文档格式正确,为什么不使用XmlReader
?