节点node和元素element的区别

使用dom4j解析处理html时,遇到了一些问题:

取出来Node对象(比如一个table),再往下取时,再用node1.selectNodes会取不到东西(实际上取出来的是一个空的文本节点),所以最好转为Element,就很容易了,element1.elements("tr"),就可以方便地循环了,比较奇怪的是转换为Element的方法居然是强转-_-!
Element table1 = (Element) tables.get(0);

 

这就导致我对Element和Node 的区别产生了一定的问题?查阅了一定的资料,总结了如下一些规律:

下面是一段代码:




    
    Title


 
           
 
 

 

控制台输出如图所示:

节点node和元素element的区别_第1张图片

 

childNodes属性返回的是NodeList数组,是属于节点(也包括元素)的属性,而children属性返回的是子元素,是属于元素的属性。而在Nodelist数组里面也有元素存在,证明了元素也是节点的一种,即元素节点。

W3C中的解释是:
在 HTML DOM (文档对象模型)中,每个部分都是节点:
    文档本身是文档节点
    所有 HTML 元素是元素节点
    所有 HTML 属性是属性节点
    HTML 元素内的文本是文本节点 (包括回车符也是属于文本节点)
    注释是注释节点

 Element 对象可以拥有类型为元素节点、文本节点、注释节点的子节点。
 NodeList 对象表示节点列表,比如 HTML 元素的子节点集合。
 元素也可以拥有属性。属性是属性节点。

 总结:元素是元素节点,是节点中的一种,但元素节点中可以包含很多的节点。


    

 

你可能感兴趣的:(HTML)