DOM4J解析它是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,DOM4J是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的Java软件都在使用DOM4J来读写XML。


以下面的xml文件为例,讲解几个java中解析xml文件常用的方法。
xml文件的解析都是将一个节点里面的内容转换为一个Element类对象,再调用Element对象的方法,获取到里面的内容。

<?xml version="1.0" encoding="UTF-8"?>
<books><book id="1001"><name>寂静的春天</name><info>蕾切尔卡逊</info></book><book id="1002"><name>环境科学导论</name><info>卢昌义</info><price>48.80</price>></book>
</books>

上面的第一本书只包含了name和info两个子节点,而第二本书还多包含了price节点。

解析步骤

  下面是解析本地xml文件的前提步骤。通过下面几步获取到根节点。

// 1. 引入jar文件 dom4j.jar
// 2. 创建一个指向XML文件的输入流FileInputStream fis = new FileInputStream("xml文件的地址");//3. 创建一个XML读取工具对象SAXReader sr = new SAXReader();//4. 使用读取工具对象, 读取XML文档的输入流 , 并得到文档对象Document doc = sr.read(fis);  //5. 通过文档对象, 获取XML文档中的根元素对象,并将其整体转换为一个Element对象Element root = doc.getRootElement();

  下面是解析网络xml文件的前提步骤。

 //1.  获取到XML资源的输入流URL url = new URL("在此传入目标网址");URLConnection conn = url.openConnection();InputStream is = conn.getInputStream();//2.  创建一个XML读取对象SAXReader sr = new SAXReader();//3.  通过读取对象 读取XML数据,并返回文档对象Document doc = sr.read(is);//4.  获取根节点Element root = doc.getRootElement();

  首先我们知道,上面的示例xml文件的根节点名称为books。根据获取到的根节点获取一级节点的名称。

       List<Element> elements = root.elements();for(Element e:elements){System.out.println(e.getName());}//显示的结果为两个book。因为books根节点下面包含了两个book

  上面xml文件中第二个book中的属性多了一个price,如何获取book里面的所有二级节点名称?(注意element方法与elements方法的区别)
  这里就需要用到二级遍历。将每一个book转换为Element对象再遍历。

List<Element> elements = root.elements();
for(Element e:elements){List<Element> es = e.elements();//二级遍历for(Element ee:es){System.out.println(ee.getName());}System.out.println(“-----------”);
}
/*
结果为:
name
info
---------
name
info
price
---------
*/

获取节点信息
public String getText();
例:获取第一本书的name里面的内容

//首先获取根节点Element对象
Element root = doc.getRootElement();
//拿到第一个book对象
Element e = root.element("book");
//再将、根据这个book的Element对象的element方法并传入"name"获取到下一级的Element对象
Element ee = e.element("name");
//获取到内容
System.out.println(ee.getText());
//运行结果为蕾切尔卡逊

上面的步骤可以用一句话完成:

 System.out.println(root.element("book").element("name").getText());

注意:
上面的方法中默认显示的是第一个book,如果想显示第二个及以后的内容,需要遍历List集合并查找出符合条件的内容。

例:显示第二本书的价格

        //获取到两个book生成的Element对象集合List<Element> elements = root.elements();for(Element e:elements){if(e.attributeValue("id").equals("1002")){System.out.println(e.element("price").getText());}}

总结:上面简要介绍了的DOM4J解析xml文件的几种方法如下:
public List<Element> elements();
public Element element(String s);
public String getName();
public String getText();
public String attributeValue(String s);

Java中DOM4J解析xml文件浅析相关推荐

  1. java使用DOM4j解析XML文件

    1.简介 dom4j是java中的XML API,性能优异.功能强大.开放源代码. 也是所有解析XML文件方法中最常用的! 2.代码实操 准备需要j的ar包添加到lib目录下,dom4j-2.1.1. ...

  2. java中DOM解析xml文件

    本文介绍了如何利用DOM(即Document Object Model文档对象模型)解析xml文件. 首先有一个xml文件: <?xml version=\"1.0\" en ...

  3. 在java中在线解析XML文件内容

    这里的天气属性有很多,可以根据自己的需求获取天气属性 这里用到了org.json的jar包,因为要使用XML属性解析数据,还有alibab.JAONObject的jar包  /*** 天气预报-更新* ...

  4. java jdom dom4j_Java基础系列17:使用DOM、SAX、JDOM、DOM4J解析XML文件详解

    一 简介 在Java中,可以使用多种方式来解析XML文件,其中最常见的可能就是DOM.SAX.JDOM.DOM4J这四种方式了.其中,DOM和SAX这两种解析XML文件的方式有jdk自带的API,因此 ...

  5. java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...

    网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...

  6. 使用dom4j解析XML文件

    为什么80%的码农都做不了架构师?>>>    dom4j是一个java 的XML API,用来读写XML文件. 使用dom4j解析XML文件,首先需要在官网下载dom4j-1.6. ...

  7. Dom4j解析Xml文件,Dom4j创建Xml文件

    Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...

  8. Java 使用 Dom4j 解析 XML 指南

    Java 使用 Dom4j 解析 XML 指南 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用 ...

  9. 一、dom4j技术--使用dom4j解析xml文件

    dom4j解析xml文件 一.导包,编写bean类和测试类 二.编码测试,通过dom4j生成bean对象 books.xml <?xml version="1.0" enco ...

最新文章

  1. ajax(Tibco) 与 SQL server 2005(5)
  2. Netty 高性能特性
  3. install pyinstaller
  4. 如何在 SAP UI5 应用中集成第三方库 :一个在移动设备上查看 Web 应用打印调试信息的小技巧
  5. 【读书笔记】--- 《码出高效:java开发手册》
  6. 山区建小学(信息学奥赛一本通-T1197)
  7. centos 下安装mysql
  8. [MySql] - 数据库备份还原
  9. R软件和扩展包的升级及R语言数据对象
  10. 台式计算机睡眠状态耗电多吗,电脑休眠后,会不会耗电的?
  11. html制作相册影集,用影集制作系统 轻松制作绚丽电子相册
  12. java中以下为不合法字符常量_以下字符常量中不合法的是 ( )。 (1.0分)
  13. python可以做数据库功能吗_python可以用哪些数据库
  14. 契约锁与200多家软件厂商实现集成应用,实现更多业务电子签需求
  15. 服务器构成,分类,操作系统;机械硬盘,固态硬盘,光模块,光纤接口,跳线;计算虚拟化
  16. [wp7软件]wp7~~各种视频播放器下载大全
  17. win10电脑运行速度如何提高最佳状态
  18. 日积月累Day10《为什么家庭会生病》
  19. 实训——智慧养老之画布1
  20. verilog 音乐演奏

热门文章

  1. MySQL百一题库_数据库应用MySQL试题题目及答案,课程2020最新期末考试题库,章节测验答案...
  2. 基于windows API的手柄/键盘映射编程(一)
  3. keycode值对照表_JS键盘与keyCode值对照表
  4. Paxos 算法详解(一)
  5. 7-20 打印九九口诀表 (15分)
  6. RouterOS(ROS)+OpenWRT双软路由配置方法及DNS缓存|UPnP等常用功能拓展
  7. python列表元组集合字典_Python列表、元组、字典、集合的方法
  8. 软考软件测评师有必要吗?
  9. App Store预览视频制作(App Previews)
  10. Mysql数据库高级、sql优化