问题描述
privatestaticDocumentFragmentparse(InputSourceinput)throwsException{DOMFragmentParserparser=newDOMFragmentParser();//HTML片段的DOM解析器。//实现了一个HTML文件。提供对文档中,它的身体和标题顶层元素。//几种方法创建所有(注释,文本,元素等),基本类型的新节点。这些方法创建新的节点,但不要放置在文档树上。这些节点可能被放置在文档树使用HTMLDocumentImpldoc=newHTMLDocumentImpl();try{//设置SAX2解析器中的任何功能的状态。//设置SAX2解析器中的任何功能的状态。解析器可能无法识别功能,如果它不认识它,它可能无法完成请求。parser.setFeature("http://cyberneko.org/html/features/augmentations",false);//是否将与HTML事件有关的infoset项包括在解析管道中。parser.setProperty("http://cyberneko.org/html/properties/default-encoding",defaultCharEncoding);//IANAencodingnames默认的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(SAXExceptione){}doc.setErrorChecking(false);DocumentFragmentres=doc.createDocumentFragment();//创建一个空DocumentFragment对象。DocumentFragmentfrag=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("-newfrag,"+frag.getChildNodes().getLength()+"nodes.");res.appendChild(frag);}}catch(Exceptione){e.printStackTrace();}returnres;}
解决方案
解决方案二:
补充一下啊:红色部分输出的是null上面代码的意思是啥啊懂得帮我解释一下啊谢谢啦这个是网络dom树组装的一部分,是爬虫的一部分
解决方案三:
你的DocumentFragmentfrag=doc.createDocumentFragment();创建对象失败了,所以返回NULL,检查一下doc的配置
解决方案四:
输出frag是null,应该是创建失败了。请问doc的配置在哪里配置啊,搜集不到DocumentFragment这些的详细的资料啊
解决方案五:
该回复于2011-04-15 17:11:06被版主删除
解决方案六:
有木有人懂啊……
解决方案七:
你试试换个类来声明parser。
解决方案八:
?书上用的都是这个类
解决方案九:
我在《自己动手写网络爬虫》第七章页面风格树去噪的源码看到和你贴出来一样的代码,我在调试这段代码,也遇到这个问题,很棘手~~~话说你看的也是这个书么?