`
liuxinglanyue
  • 浏览: 561765 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java获取网页主信息之一:html树操作[转]

阅读更多

1.节点操作 

package Source;    
   
   
//html树节点类    
public class Node    
{    
    //构造方法    
    public Node()    
    {    
        content = "";    
        hasContent = false;    
        parent = null;    
        isLeaf = true;    
    }    
        
    //构造方法,初始化此节点的内容,标签,与其父辈节点    
    public Node(String content, String tag, Node parent)    
    {    
        this.content = content;    
        this.tag = tag;    
        if(content.equalsIgnoreCase(""))    
            hasContent = false;    
        else   
            hasContent = true;    
        this.parent = parent;    
        isLeaf = true;    
    }    
        
    //添加节点内容    
    public void addContent(String str)    
    {    
        content=content+str;    
        if(content.equalsIgnoreCase("")) hasContent = false;    
        else hasContent = true;    
        return;    
    }    
        
    //设置为叶子    
    public void setLeaf(boolean is)    
    {    
        isLeaf = is;    
    }    
        
    //设置为块    
    public void setBlock(boolean is)    
    {    
        isBlock = is;    
    }    
   
    public String toString()    
    {    
        return content;    
    }    
   
    String content;    
    String tag;    
    boolean hasContent;    
    boolean isLeaf;    
    boolean isBlock;    
    Node parent;    
}

 2.树操作 

package Source;    
   
import java.util.LinkedList;    
   
   
public class HTree    
{    
    //构造方法,初始化    
    public HTree()    
    {    
        list = new LinkedList();    
    }    
        
    //插入节点    
    public void insert(Node node)    
    {    
        list.add(node);    
    }    
        
        
    //打印整棵树的节点的信息    
    public void print()    
    {    
        int len = list.size();    
        for(int i = len - 1; i >= 0; i--)    
        {    
            Node node = (Node)list.get(i);    
            String str = node.content.trim();    
            if(!str.equals("")) System.out.println(str);    
        }    
   
    }    
        
    //打印块的信息    
    public void print2()    
    {    
        int len = list.size();    
        for(int i = len - 1; i >= 0; i--)    
        {    
            Node node = (Node)list.get(i);    
            if(node.isBlock) System.out.println(node.content);    
        }    
   
    }    
        
    //合并节点,将叶节点合并至其双亲    
    public void merge()    
    {    
        int len = list.size();    
        for(int i = len - 1; i >= 0; i--)    
        {    
            Node node = (Node)list.get(i);    
            if(node.isLeaf)    
            {    
                Node curr = node;    
                String str = curr.content;    
                while(curr != null)     
                {    
                    Node next = curr.parent;    
                    if(next != null)    
                    {    
                        if(next.hasContent)    
                        {    
                            next.addContent(str);    
                            next.setLeaf(true);    
                            node.setBlock(false);    
                            break;    
                        }    
                        next.setLeaf(false);    
                        curr = next;    
                    }     
                    else curr = null;    
                }    
                if(curr == null) node.setBlock(true);    
            }    
        }    
   
    }    
        
    //获取块信息    
    public String[] getBlock()    
    {    
        int len = list.size();    
        int num = 0;    
        //获取非空节点的个数    
        for(int i = len - 1; i >= 0; i--)    
        {    
            Node node = (Node)list.get(i);    
            String str = node.content.trim();    
            if(!str.equals("")) num++;    
        }    
   
        String contBlock[] = new String[num];    
        num = 0;    
            
        //返回信息    
        for(int i = len - 1; i >= 0; i--)    
        {    
            Node node = (Node)list.get(i);    
            String str = node.content.trim();    
            if(!str.equals("")) contBlock[num++] = str;    
        }    
        return contBlock;    
    }    
   
    private LinkedList list;    
}   
 
分享到:
评论

相关推荐

    java源码包---java 源码 大量 实例

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    java网页抓取Jsoup包全

    Java网页抓取是一个常见的任务,...由于其易用性和强大的功能,Jsoup已经成为Java开发者处理HTML数据的首选工具之一。结合完整的包集(javadoc和源码),开发者不仅可以快速上手,还能深入研究和定制,以满足特定需求。

    基于java的网页浏览器.zip

    在这个项目中,开发者可能使用了其中之一来构建浏览器的界面,如地址栏、标签页、前进/后退按钮等。 2. **URL类与HttpURLConnection**: Java中的`java.net.URL`类用于表示统一资源定位符,它帮助解析和访问网页。`...

    java源码包3

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    java源码包2

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    EasyUI的功能树之异步树JAVA版本.zip

    在 EasyUI 中,异步树是指树形节点的数据不是一次性全部加载,而是根据用户操作动态地从服务器获取。这样可以提高页面加载速度,降低服务器压力,尤其在处理大数据量时更为适用。 在 Java 后端,我们需要创建一个...

    HTML树型控件.zip_html格式目录树

    - `Jquery插件 ztree.js 最好用的开源免费树形插件,没有之一.url`可能是一个链接,指向关于zTree的详细文档或教程,帮助开发者快速上手。 - `Java的授权与认证-java教程-PHP中文网.url`可能是提供有关Java安全...

    JAVA上百实例源码以及开源项目源代码

    Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...

    网页动态树形菜单图

    本文将深入探讨“网页动态树形菜单图”这一主题,以及与之相关的JSP技术。 动态树形菜单是一种能够展现层级关系的交互式用户界面组件,它通常用于导航菜单或数据展示,使得用户可以方便地浏览和选择层次结构中的...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...

    使用java通过Get请求进行爬虫操作

    GET是HTTP协议中最基础的操作之一,用于从服务器获取资源。在爬虫中,我们通常发送GET请求到目标网站的URL,以获取HTML页面内容。 1. **导入必要的库** 要在Java中执行HTTP GET请求,我们需要引入Apache ...

    java源码包4

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    java开源包6

    jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...

    java开源包9

    jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...

    java开源包4

    jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...

    java开源包5

    jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...

    java开源包8

    jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...

    java开源包10

    jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列...

    平安科技Java一百道面试题

    `Collection`是Java集合框架中最基础的接口之一,它代表了一个对象的集合。`Collection`接口的主要子接口包括: - **List**:有序集合,允许重复元素,如`ArrayList`、`LinkedList`。 - **Set**:无序且不允许重复...

Global site tag (gtag.js) - Google Analytics