在Java上逐个元素解析HTML
我有一个HTML文件:在Java上逐个元素解析HTML,java,html,parsing,Java,Html,Parsing,我有一个HTML文件: 第一组 第二组 第三组 听起来像是要对HTML文档中的所有文本节点执行一个操作。幸运的是,大多数解析库(包括XML库)都会以迭代器的形式预先为您提供所有节点 我建议您使用Jericho和call,只需检查它是否是文本节点,并将其打印出来即可。Nootice该链接有示例代码,但为了方便起见,我会将其粘贴到这里: for (Iterator<Segment> nodeIterator=segment.getNoteIterator(); nodeIterat
第一组
第二组
第三组
听起来像是要对HTML文档中的所有文本节点执行一个操作。幸运的是,大多数解析库(包括XML库)都会以迭代器的形式预先为您提供所有节点
我建议您使用Jericho和call,只需检查它是否是文本节点,并将其打印出来即可。Nootice该链接有示例代码,但为了方便起见,我会将其粘贴到这里:
for (Iterator<Segment> nodeIterator=segment.getNoteIterator(); nodeIterator.hasNext();) {
Segment nodeSegment=nodeIterator.next();
if (nodeSegment instanceof Tag) {
Tag tag=(Tag)nodeSegment;
// HANDLE TAG
// Uncomment the following line to ensure each tag is valid XML:
// writer.write(tag.tidy()); continue;
} else if (nodeSegment instanceof CharacterReference) {
CharacterReference characterReference=(CharacterReference)nodeSegment;
// HANDLE CHARACTER REFERENCE
// Uncomment the following line to decode all character references instead of copying them verbatim:
// characterReference.appendCharTo(writer); continue;
} else {
// HANDLE PLAIN TEXT
}
// unless specific handling has prevented getting to here, simply output the segment as is:
//writer.write(nodeSegment.toString());
}
for(迭代器nodeIterator=segment.getNoteIterator();nodeIterator.hasNext();){
段nodeSegment=nodeIterator.next();
if(nodeSegment instanceof标记){
标签标签=(标签)节点分段;
//手柄标签
//取消对以下行的注释,以确保每个标记都是有效的XML:
//writer.write(tag.tidy());继续;
}else if(字符引用的节点分段实例){
CharacterReference CharacterReference=(CharacterReference)节点分段;
//句柄字符引用
//取消对以下行的注释以解码所有字符引用,而不是逐字复制它们:
//characterReference.appendCharTo(编写器);继续;
}否则{
//处理纯文本
}
//除非特定处理阻止了到达此处,否则只需按原样输出段:
//writer.write(nodeSegment.toString());
}
在//句柄字符引用
和//句柄纯文本
中,您要添加字符串附加代码