易截截图软件、单文件、免安装、纯绿色、仅160KB

Java HTML Parser应用

最近因为项目需要,研究了java html parser类库的应用。记录下使用要点:
主要的类说明:
1、Parser类
解析器主类,负责载入HTML代码并解析。
2、Node接口
用来表征在解析过程中使用的语法单元。示例如下段html代码:
<span> ----Tag node
text ----Text Node
</span>
文本和标签都是独立的node元素。text文本是标签span的child node
3、NodeFilter
标签过滤器接口,用来在parser或NodeList中过滤出需要的某一类node。
4、NodeList
数据结构,表示Node的集合
需要特别注意的地方:
Parser和NodeList都有一个名为extractAllNodesThatMatch(NodeFilter filter)的方法用来过滤出符合某个条件的node,但是其内部的实现机制不同。
Parser是在解析器的功能基础上使用Iteror实现。每次调用该方法后需要执行reset方法,否则会影响下一次调用的结果。
而NodeList是在内部的数组上进行循环判断,因此各次调用之间不会互相影响,效率也比Parser的高,土建使用。
代码示例:
实现getElementByID功能
<code>
public class NodeIDFilter implements NodeFilter {
 private String id;
 public NodeIDFilter(String id)
 {
 this.id=id;
 }
 public boolean accept(Node node) {
 if(node instanceof Tag)
 {
 if(!((Tag)node).isEndTag())
 {
 String s=((Tag)node).getAttribute("id");
 if(s!=null)
 return s.equals(this.id);
 }
 }
 return false;
 // throw new UnsupportedOperationException("Not supported yet.");
 }
}
public class MHTMLParser
{
....
protected Node getElementById(String id) throws ParserException
 {
 //this.myparser.reset();
 if(this.mNodeList==null||this.mNodeList.size()==0) return null;
 NodeIDFilter nodef = new NodeIDFilter(id);
 NodeList nl = this.mNodeList.extractAllNodesThatMatch(nodef,true);
 //
 if (nl.size() != 0)
 {
 return nl.elementAt(0);
 }
 return null;
 }
 
}
</code>


相关文档:

从今天开始,把java从头至尾好好的梳理一遍!

学java也将近快两年的时间了,之前学过的东西自己感觉有点模糊,理论掌握的不是很透彻,有些问题解决的也不是很全面,为此在大学毕业前夕,想把知识好好的梳理一下,把自己对技术的疑点和一些研究心得写到csdn博客上。 ......

java中abstract与interface

   abstract  class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。 abstract  class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于 abstract  cl ......

创建自定义HTML Helper

此教程向你演示如何在你的MVC视图里创建自定义HTML Helper。利用 HTML Helpers, 可以减少乏味的输入HTML标签。
在教程的第一部分,我描述了ASP.NET MVC框架已有的HTML Helper。然后,我描述了创建自定义HTML Helper的两个方法:我会解释如何通过创建静态方法和扩展方法来创建HTML Helper。
理解 HTML Helper
HTML Helper ......

Java接口和Java抽象类

在没有好好地研习面向对象设计的设计模式之前,我对Java接口和Java抽象类的认识还是很模糊,很不可理解。
刚学Java语言时,就很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有方法名,没有方法体的东西,我实现它又有什么用呢?我从它那什么也得不到,除了一些方法名,我直接在具体类里加入这些方 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号