浅谈HtmlCleaner+XPath解析html或者xml
解析html或者xml可以选用:
DocumentBuilder或者HtmlCleaner
DocumentBuilder与js中document没有太大的区别,而且不适用,在此不过多介绍。
进入正题:
HtmlCleaner是一个开源的Java语言的Html文档解析器。HtmlCleaner能够重新整理HTML文档的每个元素并生成结构良好(Well-Formed)的 HTML 文档。默认它遵循的规则是类似于大部份web浏览器为创文档对象模型所使用的规则。然而,用户可以提供自定义tag和规则组来进行过滤和匹配。它被设计的小,快速,灵活而且独立。HtmlCleaner也可用在Java代码中,当命令行工具或Ant任务。 解析后编程轻量级文档对象,能够很容易的被转换到DOM或者JDom标准文档,或者通过各种方式(压缩,打印)连续输出XML。
代码部分:
首先我们要创建一个HtmlCleaner
HtmlCleaner htmlCleaner = new HtmlCleaner();
然后我们就可以用他来获取文件了。
TagNode tagNode= htmlCleaner.clean(content);
content可以是文件,也可以是hmtl字符串。
主要方法:
Object[] tbodyNodeArray = tagNode.evaluateXPath(XPath);
这里XPath为你要读取的目录,可以是/body/table[2]/tbody/tr/td[2]/table[4]/tbody/tr/td/table/tbody
这样,直接读取到table。
也可以直接读取你所需要的值,这里xpath的目录怎么获取呢?
首先你需要安装一个火狐浏览器,然后在插件中找到火狐调试模式插件。然后再你想要读取的html中按f12键,就会有显示html中内容直接上截图以便大家能够更清晰的理解:
这里从body中选取你要读取的内容如图:
然后右键复制xpath,就可以读取到你要内容了。
直接把目录给到td或者table都可以。给大家贴一段我的代码,相信大家就可以清晰的知道步骤了:
tagNode = htmlCleaner.clean(content); Object[] tbodyNodeArray = tagNode.evaluateXPath(XPath); for (Object tbodyNode : tbodyNodeArray) {//tbody TagNode tbody = (TagNode) tbodyNode; Object[] trNodeArray = tbody.getChildTags(); for (Object trNode : trNodeArray) {//tr TagNode tr = (TagNode) trNode; Object[] tdNodeArray = tr.getChildTags(); for (Object tdNode : tdNodeArray) {//td TagNode td = (TagNode) tdNode; //td.getText(); //输出值 } } }
以上就是xpath解析步骤,相信可以给大家一个思路了