HtmlCleaner是一个免费开源的适用范围广的Java语言Html文档解析器,它能重新整理HTML文档的每个元素并生成结构良好(Well-Formed)的HTML文档。默认它遵循的规则是类似于大部份web浏览器为创文档对象模型所使用的规则,户可以提供自定义tag和规则组来进行过滤和匹配。yy棋牌游戏
它被设计的小,快速,灵活而且独立。HtmlCleaner也可用在Java代码中,当命令行工具或Ant任务。解析后编程轻量级文档对象,能够很容易的被转换到DOM或者JDom标准文档,或者通过各种方式(压缩,打印)连续输出XML。
写一个测试用的html文件:html-clean-demo.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html xmlns = "http://www.w3.org/1999/xhtml " xml:lang = "zh-CN" dir = "ltr" >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=GBK" />
< meta http-equiv = "Content-Language" content = "zh-CN" />
< title > html clean demo </ title >
</ head >
< body >
< div class = "d_1" >
< ul >
< li > bar </ li >
< li > foo </ li >
< li > gzz </ li >
</ ul >
</ div >
< div >
< ul >
< li > < a name = "my_href" href = "1.html" > text-1 </ a > </ li >
< li > < a name = "my_href" href = "2.html" > text-2 </ a > </ li >
< li > < a name = "my_href" href = "3.html" > text-3 </ a > </ li >
< li > < a name = "my_href" href = "4.html" > text-4 </ a > </ li >
</ ul >
</ div >
</ body >
</ html >
Html代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
<meta http-equiv="Content-Language" content="zh-CN"/>
<title>html clean demo</title>
</head>
<body>
<div class="d_1">
<ul>
<li>bar</li>
<li>foo</li>
<li>gzz</li>
</ul>
</div>
<div>
<ul>
<li><a name="my_href" href="1.html">text-1</a></li>
<li><a name="my_href" href="2.html">text-2</a></li>
<li><a name="my_href" href="3.html">text-3</a></li>
<li><a name="my_href" href="4.html">text-4</a></li>
</ul>
</div>
</body>
</html>
模拟需求:取出title,name="my_href"的链接,div的class="d_1"下的所有li内容。下面用htmlcleaner写代码,HtmlCleanerDemo.java
package com.chenlb;
import java.io.File;
import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.TagNode;
/**
* htmlcleaner 使用示例.
*
* @author chenlb 2008-11-26 下午02:12:02
*/
public class HtmlCleanerDemo {
public static void main(String[] args) throws Exception {
HtmlCleaner cleaner = new HtmlCleaner();
TagNode node = cleaner.clean(new File( "html/html-clean-demo.html" ), "GBK" );
//按tag取.
Object[] ns = node.getElementsByName("title" , true ); //标题
if (ns.length > 0 ) {
System.out.println("title=" +((TagNode)ns[ 0 ]).getText());
}
System.out.println("ul/li:" );
//按xpath取
ns = node.evaluateXPath("//div[@class='d_1']//li" );
for (Object on : ns) {
TagNode n = (TagNode) on;
System.out.println(" text=" +n.getText());
}
System.out.println("a:" );
//按属性值取
ns = node.getElementsByAttValue("name" , "my_href" , true , true );
for (Object on : ns) {
TagNode n = (TagNode) on;
System.out.println(" href=" +n.getAttributeByName( "href" )+ ", text=" +n.getText());
}
}
}
Java代码
package com.chenlb;
import java.io.File;
import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.TagNode;
/**
* htmlcleaner 使用示例.
*
* @author chenlb 2008-11-26 下午02:12:02
*/
public class HtmlCleanerDemo {
public static void main(String[] args) throws Exception {
HtmlCleaner cleaner = new HtmlCleaner();
TagNode node = cleaner.clean(new File("html/html-clean-demo.html"), "GBK");
//按tag取.
Object[] ns = node.getElementsByName("title", true); //标题
if(ns.length > 0) {
System.out.println("title="+((TagNode)ns[0]).getText());
}
System.out.println("ul/li:");
//按xpath取
ns = node.evaluateXPath("//div[@class='d_1']//li");
for(Object on : ns) {
TagNode n = (TagNode) on;
System.out.println(" text="+n.getText());
}
System.out.println("a:");
//按属性值取
ns = node.getElementsByAttValue("name", "my_href", true, true);
for(Object on : ns) {
TagNode n = (TagNode) on;
System.out.println(" href="+n.getAttributeByName("href")+", text="+n.getText());
}
}
}
cleaner.clean()中的参数,可以是文件,可以是url,可以是字符串内容。个人认为:比较常用的应该是evaluateXPath、getElementsByAttValue、getElementsByName方法了。另外说明下,htmlcleaner对不规范的html兼容性比较好。
1.HtmlCleaner的文档对象模型拥有了一些函数,处理节点和属性,所以在序列化之前搜索或者编辑是非常容易的。
2.提供基本HtmlCleanerDOM的XPath支持
3.使用XML配置文件让创建定制tag变得更加容易
4.修复多个bug以及API改进
展开内容
7.7/1,679.1M
今年护士考试难不难?马上下载去体验,护士资格证准题库,护士考试致胜法宝。护士资格证可以做什么?含金量高,所有想成为护士的人必须参加护士资格证考试。护士资格证考试...
7.8/716.0M
搜答案+app是一款以作业解答的答案查找软件,软件为用户提供了大量试题,用户可以根据自己的学习要求进行线上查询,软件还有专业的的老师为你视频讲解,软件免费的提供...
7.7/803.0M
醉玲珑手游小米版是一款真实人脉养成的MMORPG手游,游戏除了丰富多样的系统玩法之外,还有精美的坐骑、翅膀、华服、头像和社交动作等外显道具增强玩家的交互体验,带...
8.4/894.4M
消防车驾驶学校2018年是最新打造的一款消防车驾驶模拟游戏,3d画面完全模拟真实的场景,开始你的消防练习,在遇到火灾的时候能够第一时间消灭。消防车驾驶学校201...
8.2/1,513.1M
全国的题库应有尽有,赛车手交规app是一款关于学车的练习题库,从科目一到科目四一一给大家进行指导,内容丰富又全面,你也可以成为一名合适的司机。赛车手交规app功...
7.6/1,884.3M
金融投资学个人简历模板是小编为各位实习的小伙伴准备的一套非常好用的素材,可以让大家快速的完成学业,达到新的高度,让对方一眼就发现你,成功入职,需要的下载吧。可以...
8.5/1,780.1M
琴易办app是一个便捷的政务服务软件,用户可以通过软件快速处理各项业务,让市民朋友少跑腿,拥有丰富的最新政策,还可以查询办事指南!软件介绍“琴易办”——横琴新区...
10.0/1,316.5M
长尾词挖掘大师是一款长尾关键词挖掘软件,包含了海量的词库,适合网络工作人员使用,建立长尾词关键词库利器。长尾词挖掘大师怎么用请解压后使用,输入关键词点击开始新任...
7.5/1,914.6M
旋转之墙手游是一款非常的简单以及休闲的游戏,直接的转圈阻挡各种小方块的撞击,不要让外面的小方块装到你的里面,阻挡的越多,分数就越高!旋转之墙手游特色1、简单以及...
7.9/1,785.1M
利用InCopy,文案人员和编辑可以设计文本样式、跟踪更改并对文档进行简单的版面修改,而设计人员可以同时在AdobeInDesign中处理同一文档,而不会覆盖对...
9.3/851.8M
很多想要孩子的爸爸妈妈都特别的期待孩子的出生,但是很多人都只知道怀胎十月,却不知道准确的预产期。预产期计算器就是一个推算预产期的实用小工具,推算方法是按末次月经...
7.5/1,516.1M
放学别跑是一款休闲竞技游戏,游戏有着轻松诙谐的2d画面,游戏中每个英雄都极具个性,且有各自的特性定位,玩法模式也极为特殊,和你以往玩的渣渣游戏完全不同。放学别跑...
9.5/352.1M
开黑上分就找理想玩伴,语音连麦、游戏开黑、实力相符,专业电竞大神组队,边打边教边玩边聊,大神评分真实靠谱,一款类似于TT语音的手机开黑软件,主要就是给用户提供开...
9.3/1,064.2M
全民练习生官方版是精致场景二次元世界中感受极致操作的游戏。这里超多角色养成,装扮出不同的风格,体验多个视角在轻松养成中奖励丰富。游戏中随着更多模式开始挑战,在升...
8.6/10.3M
女神的斗士折扣版是一款全新推出的大型策略对战手游。玩家将在游戏中成为一名领主,对自己的领地具有掌控权。熟悉的神话角色再现。玩家可以收集喜欢的英雄角色为自己战斗,...
9.2/1,571.9M
全民英杰传是一款以三国历史为题材背景的角色扮演游戏。游戏有着精美的动漫画风,融合了各种新颖的元素和玩法,为你呈现一个不一样的三国世界。还有有趣的剧情和人物,然你...
8.2/1,042.8M
远方SULCMIS批量导入读者相片,由于SULCMIS自带的批量上传相片功能每次只能上传几百张,而且还不能保证每次都能上传成功,因此开发《远方SULCMIS批量...
8.8/211.7M
鄂煤服务司机版app是专为鄂尔多斯市本地煤炭运输司机们打造的工作出行软件,直接在软件上进行相关信息的天界,就能够获得出入矿凭证,方便用户随时查询和监管车辆信息。...
10.0/1,029.9M
小魔头世界是一款画风Q萌的休闲策略战争游戏,游戏中野兽打破了平和的丛林世界,开始倒去破坏丛林,你将帮助丛林女神召唤丛林守卫者一起保卫丛林,喜欢就下载吧小魔头世界...
8.7/1,782.2M
京门风月手游电脑版是一款由经典小说改编的游戏,经典的古典中国画风,专为女性玩家设计,精美游戏造型,喜欢的朋友可以来下载哦!电脑运行需下载模拟器模拟器大全|最好的...
10.0/468.7M
娘化植物养成是一款趣味休闲手游,在游戏中玩家可以养成培养游戏中的各种娘化植物,玩家可以通过选择不同的素材,来养成各种植物,得到的效果也是不一样的,感兴趣的小伙伴...
8.9/1,562.3M
钱真多app是一款记账管理软件,为用户带来了便捷的记账方式,智能统计管理你的财富,让你可以合理安排自己的资金,合理理财!钱真多app介绍钱真多App是一款便捷的...
8.3/1,649.8M
百家姓是作为传统启蒙三大读物之一,赵钱孙李作为前四姓是由于皇帝权贵而来。是对中国姓氏文化传承和文字认识都有很大作用,现今很多孩子都会接触到,今天东坡小编给大家百...
9.5/1,539.5M
百度版如果的世界是一款日系的角色冒险游戏,主要的特色就在于,SNK跨国合作,纯正日漫100%还原,老牌回合团队续作,经典元素全面升级!打造专属自己的萌宠,为大家...
9.8/1,195.9M
球球弹一弹游戏是一款全新的跳跃休闲类游戏,游戏采用多种画面设计,玩家在游戏中可以自由选择皮肤,你将要在游戏中点击小球来进行跳跃得到高分解锁更多的关卡!游戏特色【...