我正在尝试使用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文档是格式良好,它有所有的打开和关闭标记正确。
先谢了。
4条答案
按热度按时间v2g6jxz61#
正如flash所说,你需要一个HTML解析器,而不是XML解析器,HTML不是XML。
我用过的好的解析器是Neko和TagSoup,Neko是一个很好的全能解析器; TagSoup的目标是能够解析任何内容,无论格式多么不正确。
oalqel3c2#
一般来说,不能使用XML解析器解析HTML:
<p>
标记不需要匹配的</p>
标记。)这将导致XML解析器的终端消化不良。但是,如果输入文档是XHTML,那么理论上应该能够使用XML解析器(如SAX),甚至应该能够根据XHTML模式验证文档。
bpsygsoo3#
请看一下HtmlParser,通常SAX不是解析html的好解决方案。
jm2pwxwz4#
另一个Java的HTML解析器是JSoup:https://jsoup.org/