再论节点Node与元素的区别

来源:互联网 发布:triz矛盾矩阵表 编辑:程序博客网 时间:2024/05/22 14:16
一、Element肯定是Node,但是Node不一定是Element。

Dom在解析文档的时候按整个文档的结构生成一棵树,全部保存在内存 优点就是整个文档都一直在内存中,我们可以随时访问任何节点,并且对树的遍历也是比较熟悉的操作;缺点则是耗内存,并且必须等到所有的文档都读入内存才能 进行处理。 一个需要注意的地方就是,XML文档两个标签之间的空白也是这棵树的一个节点(Text节点),包括回车、Tab等。

所以,在用getChildNodes、getFirstChild、getNextSibling时返回的可能不全是Element。

据说DocumentBuilderFactory domFac = DocumentBuilderFactory.newInstance();

domFac.setIgnoringElementContentWhitespace(true); 有用,但是我试了下,没什么效果。

所以读xml时还是用getElementsByTagName方便点

二、

Element是Node的子集,XmlNode表示一个节点,包括XmlElement(元素)和XmlAttribute(属性)等。 如:

<Alarm lock="true">             //node  
      <Time>                       //node  
          StringValue              //node  
      </Time>                      //node  
</Alarm>                           //node  

  以上Alarm(元素节点),lock(属性节点),Time(元素节点),StringValue(文本节点)都是Node,但是只有 <Alarm>......</Alarm>和<Time>StringValue</Time>是 Element   

----------------以下是我自己的理解--------------

xml element是继承于node,除了element之外,还有XmlAttribute、XmlText等。
通过某些方法可能可以得到某个值,可能是element、attribute、xmlText等,如果你不确定,则可以使用node来做返回值的类型。
node只是具有了一些通用的方法,而element则具有更具体的功能。


原创粉丝点击