zoukankan      html  css  js  c++  java
  • 浅谈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解析步骤,相信可以给大家一个思路了

  • 相关阅读:
    npm ci命令解析
    performance分析
    mpvue 引入直播功能
    lodash按需加载
    React生命周期分析
    vue 项目打包优化(远不止dll)
    Git 底层数据结构和原理
    Docker 部署 Nuxt.js 项目
    TMS320DM642调试出现#10247-D creating output section ".capChaACrSpace" without a SECTIONS 解决办法
    TMS320DM642的emif(外部存储器接口)的结构设置
  • 原文地址:https://www.cnblogs.com/xiehaoyu/p/3435225.html
Copyright © 2011-2022 走看看