zoukankan      html  css  js  c++  java
  • 页面解析工具:HtmlParser学习

    HtmlParser的数据组织分析:

    Node是形成树结构表示HTML的基础,所有的数据表示都是接口Node的实现,Node定义了与页面树结构表达的页面Page对象,定义了获取父、子、兄弟节点的方法,定义了节点到对应的html文本的方法,定义了该节点对应的起至位置,定义了过滤方法,定义了Visitor访问机制。

     1 public interface Node
     2     extends
     3         Cloneable
     4 {
     5 
     6     String toPlainTextString ();
     7     String toHtml ();
     8     String toHtml (boolean verbatim);
     9     String toString ();
    10     void collectInto (NodeList list, NodeFilter filter);
    11     int getStartPosition ();
    12     void setStartPosition (int position);
    13     int getEndPosition ();
    14     void setEndPosition (int position);
    15     Page getPage ();
    16     void setPage (Page page);
    17     void accept (NodeVisitor visitor);
    18     Node getParent ();
    19     void setParent (Node node);
    20     NodeList getChildren ();
    21     void setChildren (NodeList children);
    22     Node getFirstChild ();
    23     Node getLastChild ();
    24     Node getPreviousSibling ();
    25     Node getNextSibling ();
    26     String getText ();
    27     void setText (String text);
    28     void doSemanticAction ()
    29         throws
    30             ParserException;
    31     Object clone ()
    32         throws
    33             CloneNotSupportedException;
    34 }

    AbstractNode是Node的一种具体的类实现,起到了构造树形结构的作用,除了同具体Node相关的accept方法,toString,toHtml,toPlainTextString方法以外,AbstractNode实现了大多基本的方法,使得它的子类,不用理会具体的树操作。
    Tag是具体分析的主要内容。Tag分成composite的Tag和不能包含其他Tag的简单Tag两类,其中前者的基类是CompositeTag,其子类包含BodyTag,Div,FrameSetTag,OptionTag,等27个子类;而简单Tag有BaseHrefTag、DoctypeTag,FrameTag,ImageTag,InputTag,JspTag,MetaTag,ProcessingInstructionTag这八类。

    Node分成三类:

    • RemarkNode:代表Html中的注释
    • TagNode:标签节点,是种类最多的节点类型,上述Tag的具体节点类都是TagNode的实现。
    • TextNode:文本节点



     

  • 相关阅读:
    BZOJ1787 [Ahoi2008]Meet 紧急集合[结论题]
    poj3728 The merchant[倍增]
    poj2750 Potted Flower[线段树]
    poj2482 Stars in Your Window[扫描线]
    poj2182 Lost Cows[BIT二分]
    UVA12096 The SetStack Computer
    第05组(65) 需求分析报告
    团队介绍与选题报告
    数据采集技术第三次作业
    结对编程作业
  • 原文地址:https://www.cnblogs.com/chp008/p/1511031.html
Copyright © 2011-2022 走看看