日期:2014-05-17  浏览次数:20603 次

请懂的帮忙解释一下哈~html解析

private static DocumentFragment parse(InputSource input) throws Exception {
??? ??? DOMFragmentParser parser = new DOMFragmentParser();//HTML片段的DOM解析器。
??? ???
??? ??? //实现了一个HTML文件。提供对文档中,它的身体和标题顶层元素。

//??? ??? 几种方法创建所有(注释,文本,元素等),基本类型的新节点。这些方法创建新的节点,但不要放置在文档树上。这些节点可能被放置在文档树使用
??? ??? HTMLDocumentImpl doc = new HTMLDocumentImpl();
??? ??? try {
??? ??? ??? //设置SAX2解析器中的任何功能的状态。
??? ??? ??? //设置SAX2解析器中的任何功能的状态。解析器可能无法识别功能,如果它不认识它,它可能无法完成请求。
??? ??? ??? parser.setFeature(
??? ??? ??? ??? ??? "http://cyberneko.org/html/features/augmentations", false);//是否将与HTML事件有关的infoset项包括在解析管道中。
??? ??? ??? parser.setProperty(
??? ??? ??? ??? ??? "http://cyberneko.org/html/properties/default-encoding",
??? ??? ??? ??? ??? defaultCharEncoding);//IANA encoding names 默认的HTML文件编码
??? ??? ??? parser
??? ??? ??? ??? ??? .setFeature(
??? ??? ??? ??? ??? ??? ??? "http://cyberneko.org/html/features/scanner/ignore-specified-charset",
??? ??? ??? ??? ??? ??? ??? true);
??? ??? ??? parser
??? ??? ??? ??? ??? .setFeature(
??? ??? ??? ??? ??? ??? ??? "http://cyberneko.org/html/features/balance-tags/ignore-outside-content",
??? ??? ??? ??? ??? ??? ??? false);
??? ??? ??? parser
??? ??? ??? ??? ??? .setFeature(
??? ??? ??? ??? ??? ??? ??? "http://cyberneko.org/html/features/balance-tags/document-fragment",?
??? ??? ??? ??? ??? ??? ??? true);
??? ??? ??? parser.setFeature(
??? ??? ??? ??? ??? "http://cyberneko.org/html/features/report-errors", false);//是否报告错误
??? ??? } catch (SAXException e) {
??? ??? }

??? ??? doc.setErrorChecking(false);
??? ??? DocumentFragment res = doc.createDocumentFragment(); //创建一个空DocumentFragment对象。
??? ??? DocumentFragment frag = doc.createDocumentFragment();
??? ???
??? ??? //解析一个文档片段
??? ??? parser.parse(input, frag);//解析一个文档片段,解析成DocumentFragment对象,放到frag里=================??????????
??? ??? System.out.println(frag+"frag");

??? ??? //将子节点添加到所有节点的后面
??? ??? res.appendChild(frag);
??? ??? try {
??? ??? ??? while (true) {
??? ??? ??? ??? frag = doc.createDocumentFragment();
??? ??? ??? ??? parser.parse(input, frag);
??? ??? ??? ??? if (!frag.hasChildNodes())
??? ??? ??? ??? ??? break;
??? ??? ??? ??? System.out.println(" - new frag, "
??? ??? ??? ??? ??? ??? + frag.getChildNodes().getLength() + " nodes.");
??? ??? ??? ??? res.appendChild(frag);
??? ??? ??? }
??? ??? } catch (Exception e) {
??? ??? ??? e.printStackTrace();
??? ??? }

??? ??? return res;
??? }

?

?

?

红色部分输出的是null

上面代码的意思是啥啊

懂得帮我解释一下啊

谢谢啦