java 使用SAX解析器解析HTML

zte4gxcn  于 2023-01-04  发布在  Java
关注(0)|答案(4)|浏览(202)

我正在尝试使用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文档是格式良好,它有所有的打开和关闭标记正确。
先谢了。

v2g6jxz6

v2g6jxz61#

正如flash所说,你需要一个HTML解析器,而不是XML解析器,HTML不是XML。
我用过的好的解析器是NekoTagSoup,Neko是一个很好的全能解析器; TagSoup的目标是能够解析任何内容,无论格式多么不正确。

oalqel3c

oalqel3c2#

一般来说,不能使用XML解析器解析HTML:

  • HTML的元素标记不需要在所有情况下都匹配。(例如,<p>标记不需要匹配的</p>标记。)这将导致XML解析器的终端消化不良。
  • 现实世界中的HTML因不符合HTML规范而臭名昭著,更不用说HTML的XML兼容子集了。

但是,如果输入文档是XHTML,那么理论上应该能够使用XML解析器(如SAX),甚至应该能够根据XHTML模式验证文档。

bpsygsoo

bpsygsoo3#

请看一下HtmlParser,通常SAX不是解析html的好解决方案。

jm2pwxwz

jm2pwxwz4#

另一个Java的HTML解析器是JSoup:https://jsoup.org/

相关问题