Parsing html with SAX parser

Deadly 提交于 2019-12-05 23:16:34

问题


I am trying to parse the normal html file using SAX parser.

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();
        }

but i am getting the exception

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

can anyone please tell me why i am getting this exception, the html document is well formed and it has all the open and close tags properly.

Thanks in advance.


回答1:


As flash says, you need an HTML parser, not an XML parser. HTML is not XML.

Good parsers i've used are Neko and TagSoup. Neko is a good all-round parser; TagSoup specifically aims to be able to parse anything, no matter how ill-formed.




回答2:


Generally speaking, you cannot parse HTML with an XML parser:

  • HTML's element tags are not required to match in all cases. (For example a <p> tag does not require a matching </p> tag.) This will cause terminal indigestion for an XML parser.

  • Real-world HTML is notorious for not being conformant to the HTML spec, let alone an XML compatible subset of HTML.

However, if your input document is XHTML, you should in theory be able to use an XML parser such as SAX. You should even be able to validate the document against the XHTML schema.




回答3:


Please have a look at HtmlParser. Normally SAX is not a good solution to parse html.



来源:https://stackoverflow.com/questions/7817495/parsing-html-with-sax-parser

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!