使用SAX解析器解析html

时间:2011-10-19 06:43:24

标签: java html parsing sax

我正在尝试使用SAX解析器解析普通的html文件。

SAXBuilder builder2 = new SAXBuilder();
         try {
            Document sdoc = (Document)builder2.build(readFile);
            NodeList nl=sdoc.getElementsByTagName("body");
            System.out.println("nodelist>>>>>>>>>>>"+nl.getLength());

        } catch (JDOMException e1) {
            e1.printStackTrace();
        }

但我得到了例外

Open quote is expected for attribute "{1}" associated with an  element type  "class".

任何人都可以告诉我为什么我得到这个例外,html文档格式正确,并且它具有正确的所有打开和关闭标记。

提前致谢。

3 个答案:

答案 0 :(得分:5)

正如flash所说,你需要一个HTML解析器,而不是XML解析器。 HTML不是XML。

我使用的好解析器是NekoTagSoup。 Neko是一个很好的全面解析器; TagSoup专门用于解析任何事情,无论形式多么糟糕。

答案 1 :(得分:2)

请查看HtmlParser。通常SAX不是解析html的好方法。

答案 2 :(得分:2)

一般来说,您无法使用XML解析器解析HTML:

  • 在所有情况下,HTML的元素标签不需要匹配。 (例如,<p>标记不需要匹配的</p>标记。)这将导致XML解析器的终端消化不良。

  • 现实世界的HTML因不符合HTML规范而臭名昭着,更不用说HTML兼容的HTML子集了。

但是,如果您的输入文档是XHTML,那么理论上应该能够使用XML解析器,例如SAX。您应该甚至能够根据XHTML架构验证文档。