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. 牛!何恺明包揽2项ICCV 2017最佳论文奖!这位高考状元告诉你什么是开挂的人生
  2. oracle将查询结果声明为伪表,Oracle查询操作(增删改查,伪表,高级查询)实例讲解...
  3. 深度学习(六)caffe入门学习
  4. Redlock:Redis分布式锁最牛逼的实现
  5. SAP Fiori smart template技术里CDS view的注解和UI元素对应关系
  6. 微信找不到nfc功能_苹果ios 14一周深度体验,这3个功能尤其好用,你还没发现吗?...
  7. 京东宙斯php版本sdk不能用_多主机平台玩家的福音,北通宙斯T6精英版体验测评...
  8. 关于windows的进程处理(三)
  9. 烂泥:windows server 2008取消关闭事件跟踪
  10. java string 转 class_java-String类的转换功能
  11. C++设计模式从入门到精通——实例说明
  12. IOS越狱插件汉化工具
  13. 【免费好用】节假日查询接口
  14. 输入框字母自动转换大写
  15. Stata:回归结果中不报告行业虚拟变量的系数
  16. 字体在ppt中可以整体替换吗_PPT字体替换其实很简单
  17. java多线程------锁
  18. 蓝桥杯2016初赛python题解
  19. css3 实现元素 弧线运动
  20. 计算机网络之应用层与传输层

热门文章

  1. ubuntu关机命令
  2. 同行北京丨科士达聚渠道之力,共驱数据中心低碳高效发展
  3. 独立站即web3.0,国家“十四五“规划要求企业建数字化网站!
  4. Mac 上的搜狗输入法卡顿问题
  5. 去斑收毛孔 7个经济小偏方
  6. vue输入框回车页面刷新
  7. Java集合练习之——斗地主游戏模拟(发牌遍历(而已))
  8. MyEclipse/Eclipse调背景色、代码配色、突出当前行、显示行数、放大字号方法总结
  9. 优动漫PAINT-朱槿花的画法
  10. 看看编程大牛们是怎么摆放桌面文件的