我正在尝试使用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文档格式正确,并且它具有正确的所有打开和关闭标记。
提前致谢。
答案 0 :(得分:5)
正如flash所说,你需要一个HTML解析器,而不是XML解析器。 HTML不是XML。
我使用的好解析器是Neko和TagSoup。 Neko是一个很好的全面解析器; TagSoup专门用于解析任何事情,无论形式多么糟糕。
答案 1 :(得分:2)
请查看HtmlParser。通常SAX不是解析html的好方法。
答案 2 :(得分:2)
一般来说,您无法使用XML解析器解析HTML:
在所有情况下,HTML的元素标签不需要匹配。 (例如,<p>
标记不需要匹配的</p>
标记。)这将导致XML解析器的终端消化不良。
现实世界的HTML因不符合HTML规范而臭名昭着,更不用说HTML兼容的HTML子集了。
但是,如果您的输入文档是XHTML,那么理论上应该能够使用XML解析器,例如SAX。您应该甚至能够根据XHTML架构验证文档。