Element和Node的异同

  Element是使用dom4j一开始就能用到的。一般就是使用Element对象调用elements()方法获取其下的所有子元素(就只是子元素,没有孙子元素)。这样一来有个缺点,就是当树很深的话,一次只能遍历一层,你得循环套循环,才能找到孙子的孙子。
  所以就有Xpath的技术了,它就可以迅速定位到你要的位置,不管多深(前提你得知道树的层次,作为参数传送到位置)。在这一块我们用的Node。
  但是我用的过程中,发现Element和Node对象可以互相转化。这就让我很疑惑,它俩啥关系?而且啥时候用Element啥时候用Node呢?
翻阅文档可以看出,Node是父类,Element是它的间接子类。



  可以说Element对它自己的要求更高些,因为它是在Node的基础上扩建的。所以Element里面的东西更为丰富。
看下面这个代码:
Demo.xml

<?xml version="1.0" encoding="UTF-8"?>
<companys><company id="1001"><name>万科A</name><address>广东深圳</address></company><company id="1002"><name>恒大B</name><address>广东广州</address></company><company id="1003"><name>金地C</name><address>北京</address></company><company id="1006"><name>绿地D</name><address>上海</address></company>
</companys>

TestXML.java

import java.io.File;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;public class TestNode {public static void main(String args[]) {try {SAXReader reader = new SAXReader();File xmlFile = new File("E:\\demo.xml");Document doc = reader.read(xmlFile);//             得到根标签Element root = doc.getRootElement();
//           遍历根元素下的所有元素Iterator<Element> it = root.elementIterator();while(it.hasNext()) {System.out.println(it.next());}System.out.println("----------------------------");
//           遍历根元素下的所有节点for(int i=0;i<root.nodeCount();i++) {System.out.println(root.node(i));}} catch(Exception e) {e.printStackTrace();}}
}

输出结果如下:

  你会发现Node对象比Element对象多,仔细再看,你会发现Node对象不包含换行符和制表位,所以它才输出的多。

总结:Element是Node的子类,所以Element可以上转型为Node对象,也就是子类可以转换为父类。与此同时,Node也可以转为Element(这里姑且可认为下转型,但一般java中是不支持的,因为对于一个父类和子类,从父类转到子类,必然增加一些属性,java根本不知道值是多少,反之,则可以),这样,Node中势必会把换行符和制表符那些对象丢掉。

dom4j关于Element和Node的理解相关推荐

  1. Element和Node的区别你造吗?

    1.写在前面 我们经常使用document.getElementById去获取DOM中的元素,也会使用childNodes来获取子节点.那么Element和Node的区别是什么?而什么又是HTMLCo ...

  2. JavaScript中Element与Node的区别,children与childNodes的区别

    关于Element跟Node的区别,cilldren跟childNodes的区别很多朋友弄不清楚,本文试图让大家明白这几个概念之间的区别. Node(节点)是DOM层次结构中的任何类型的对象的通用名称 ...

  3. dom4j的Element

    1,Element其中的一个Element为dom4j,创建Element,通过DocumentHelper.createElement(name) 如:Element result=Document ...

  4. 基于Vue+Element UI+Node+MongoDB的医院门诊预约挂号系统

    目录 概述 3 系统目标 3 需求分析 3 功能需求 3 非功能需求 4 设计 4 数据库设计 4 数据库说明 4 数据结构 4 接口设计 5 登录 5 注册.添加信息 6 查询信息 6 查询全部病人 ...

  5. (转)Element和Node的区别你造吗?

    原文:https://blog.csdn.net/kkkkkxiaofei/article/details/52608394 1.写在前面 一个简单的页面: 1 2 3 4 5 6 7 8 9 10 ...

  6. element 往node里面增加属性值_【Vue原理】Compile - 源码版 之 Parse 属性解析

    写文章不容易,点个赞呗兄弟 专注 Vue 源码分享,文章分为白话版和 源码版,白话版助于理解工作原理,源码版助于了解内部详情,让我们一起学习吧 研究基于 Vue版本 [2.5.17] 如果你觉得排版难 ...

  7. [XML-Jsoup]Jsoup_对象的使用(Jsoup工具类,Document,Elements,Element,Node)

    对象的使用: 1. Jsoup:工具类,可以解析html或xml文档,返回Document* parse:解析html或xml文档,返回Document* parse​(File in, String ...

  8. [JS-DOM]核心DOM模型(Document,Element,Node)

    核心DOM模型: * Document:文档对象1. 创建(获取):在html dom模型中可以使用window对象来获取1. window.document2. document2. 方法:1. 获 ...

  9. element 往node里面增加属性值_HashMap加载因子为何0.75,为何初始化值2的指数幂,底层解析...

    01 前言 我们在声名HashMap的时候,一般都会这样写. public class MapTest { public static void main(String[] args) { HashM ...

最新文章

  1. 用eclipse创建WebService Step by Step
  2. shell判断输入变量或者参数是否为空
  3. 第07课:动手实战基于 ML 的中文短文本聚类
  4. 使用SonarCloud对.NET Core项目进行静态代码分析
  5. 报错,can‘t found the source action, can‘t run the graph[fatal.flow]
  6. 腾讯否认微信测试语音消息进度调节​;监证会同意蚂蚁集团科创板IPO注册;React 17 正式版发布|极客头条
  7. 电脑版永恒纪元服务器正在维护,永恒纪元————【维护】1月10日更新维护公告...
  8. 190723每日一句 学会调整你的心态
  9. namenode和datanode的功能分别是什么_海德堡印刷机电路板分别是什么功能
  10. dell 笔记本禁用触摸板方法
  11. 永凯APS生产排程软件同时考虑物料及产能
  12. Android实现ListView分页显示
  13. roslyn生成html,通过Roslyn将字符串生成可以执行的C#代码
  14. UML 核心元素之参与者
  15. hdu5294||2015多校联合第一场1007 最短路+最大流
  16. python爬取招聘网站的选题背景_Python爬虫爬取智联招聘(进阶版)
  17. Microsoft Visual C++ 14.0 is required.
  18. HackingLab 脚本关
  19. 中国大学mooc慕课题库答案怎么查,这里全有了
  20. SK6# 上海居转户随记

热门文章

  1. Linux鸟哥的私房菜(硬件)
  2. Caltech-UCSD Birds-200-2011
  3. PLC模拟量计算及编程问题
  4. 如何用计算机打出下划线,哪位可以告诉我在电脑上怎么打下划线
  5. python ocr文字识别竖排繁体_繁体文字识别 ABBYY 与 千百OCR 使用比较
  6. 计算机教室防辐射方案,办公室电脑族如何防辐射 内调外养轻松应对
  7. 新版HCIE考试有什么题型?各题型具体怎么考?
  8. Eclipse中Android SDK Manager无法打开
  9. hdu 1686 Oulipo(kmp)
  10. 浅谈SPICE原理及应用