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
上面代码的意思是啥啊
懂得帮我解释一下啊
谢谢啦