dom4j的解析实例

简介: book.xml数据如下:[html] view plain copy                 Thomas          Java从入门到放弃          UCCU                      小白         ...
book.xml数据如下:
[html] view plain copy
 
  1. <books>  
  2.     <book>  
  3.         <author>Thomas</author>  
  4.         <title>Java从入门到放弃</title>  
  5.         <publisher>UCCU</publisher>  
  6.     </book>  
  7.     <book>  
  8.         <author>小白</author>  
  9.         <title>MySQL从删库到跑路</title>  
  10.         <publisher>Go Die</publisher>  
  11.     </book>  
  12.     <book>  
  13.         <author>PHPer</author>  
  14.         <title>Best PHP</title>  
  15.         <publisher>PHPchurch</publisher>  
  16.     </book>  
  17. </books>  
我把book.xml放在D盘的根目录下,这样读取时能比较方便些……
下面是代码:
[java] view plain copy
 
  1. package com;  
  2.   
  3. import org.dom4j.Document;  
  4. import org.dom4j.Element;  
  5. import org.dom4j.io.SAXReader;  
  6.   
  7. import java.io.ByteArrayInputStream;  
  8. import java.io.File;  
  9. import java.util.List;  
  10.   
  11. public class SAXReaderXML {  
  12.     public static void main(String[] args) throws Exception {  
  13.         SAXReader reader = new SAXReader();  
  14.         File xmlfile = new File("D:/books.xml");  
  15.         String xml = "<books><book><author>Thomas</author><title>Java从入门到放弃</title><publisher>UCCU</publisher>" +  
  16.                 "</book><book><author>小白</author><title>MySQL从删库到跑路</title><publisher>GoDie</publisher></book>" +  
  17.                 "<book><author>PHPer</author><title>BestPHP</title><publisher>PHPchurch</publisher></book></books>";  
  18.         Document fileDocument = reader.read(xmlfile);//从xml文件获取数据  
  19.         Document document = reader.read(new ByteArrayInputStream(xml.getBytes("utf-8")));//读取xml字符串,注意这里要转成输入流  
  20.         Element root = document.getRootElement();//获取根元素  
  21.         List<Element> childElements = root.elements();//获取当前元素下的全部子元素  
  22.   
  23.         for (Element child : childElements) {//循环输出全部book的相关信息  
  24.             List<Element> books = child.elements();  
  25.             for (Element book : books) {  
  26.                 String name = book.getName();//获取当前元素名  
  27.                 String text = book.getText();//获取当前元素值  
  28.                 System.out.println(name + ":" + text);  
  29.             }  
  30.         }  
  31.         //获取第二条书籍的信息  
  32.         Element book2 = childElements.get(1);  
  33.         Element author = book2.element("author");//根据元素名获取子元素  
  34.         Element title = book2.element("title");  
  35.         Element publisher = book2.element("publisher");  
  36.         System.out.println("作者:" + author.getText());//获取元素值  
  37.         System.out.println("书名:" + title.getText());  
  38.         System.out.println("出版社:"+publisher.getText());  
  39.     }  
  40. }  
代码解析:
1、读取xml数据
SAXReader可以通过多种方式读取xml数据,并返回Document格式的对象。通过查看源码,可以看出read()方法接收File,InputStream和URL等格式的参数来读取相应的xml数据。在代码里我演示了读取xml文档和xml格式的字符串两种方式。当然,字符串要根据相应的编码转成输入流才能被SAXReader读取。
2、解析xml数据
读取到Document对象后,我们使用getRootElement()方法获取根元素,返回的是一个Element对象。在本例中,该元素的name即为books。
3、获取子元素数据
获取根元素后,便可以一层一层的去获取他的子元素信息。如果知道子元素的标签名称,便可以直接调用element("name")方法获取该子元素。如果不知道子元素的名称,或者想直接获取该元素下的全部子元素,可以调用elements()方法获取一个包括全部元素的list,然后进行下一步的处理。
4、输出元素信息
调用getName()方法获取当前元素的元素名,attributeValue()获取属性名。如果当前元素没有子元素,则调用getText()方法获取元素值。

 

目录
相关文章
|
13天前
|
存储 缓存 安全
掌握Go语言:Go语言中的字典魔法,高效数据检索与应用实例解析(18)
掌握Go语言:Go语言中的字典魔法,高效数据检索与应用实例解析(18)
|
3月前
|
JavaScript API Windows
Nodejs 文件 与 路径 相关用法实例解析
Nodejs 文件 与 路径 相关用法实例解析
75 0
|
21天前
|
监控 算法 Unix
【Linux 异步操作】深入理解 Linux 异步通知机制:原理、应用与实例解析
【Linux 异步操作】深入理解 Linux 异步通知机制:原理、应用与实例解析
53 0
|
27天前
|
测试技术 Android开发
快速上手App自动化测试利器,Toast原理解析及操作实例
`Toast`是Android中的轻量级通知,短暂显示在屏幕任意位置,1-2秒后自动消失,不获取焦点且不可点击。Appium通过uiautomator2在控件树中处理Toast。在测试中,可设置隐式等待,利用XPath或Accessibility ID定位Toast元素进行检测和验证。示例代码展示了如何初始化driver,点击触发Toast,以及如何定位并读取Toast文本。
20 3
|
1月前
|
机器学习/深度学习 自然语言处理 算法
PyTorch实例:简单线性回归的训练和反向传播解析
PyTorch实例:简单线性回归的训练和反向传播解析
PyTorch实例:简单线性回归的训练和反向传播解析
|
2月前
|
并行计算 Java API
Java中的Lambda表达式应用与实例解析
【2月更文挑战第4天】本文将深入探讨Java编程语言中Lambda表达式的应用与实例解析,通过详细介绍Lambda表达式的概念、语法特点以及在实际项目开发中的运用,帮助读者更好地理解和运用这一强大的编程特性。
|
2月前
|
测试技术 Python
Python中的装饰器应用及实例解析
装饰器是Python中一种强大的函数式编程工具,能够优雅地扩展和修改函数的功能,提高代码的复用性和可维护性。本文将深入探讨Python中装饰器的原理、应用场景以及实际示例,帮助读者更好地理解和运用装饰器技术。
|
3月前
|
Python
Python流程控制指南:实例解析与技巧揭秘
Python流程控制指南:实例解析与技巧揭秘
23 0
|
3月前
|
Python
解锁Python集合的妙用:常用函数与实例深度解析
解锁Python集合的妙用:常用函数与实例深度解析
25 0
|
3月前
|
测试技术 数据库
深入解析MyBatis-Plus中的逻辑删除功能及实例
深入解析MyBatis-Plus中的逻辑删除功能及实例
159 0

推荐镜像

更多