dom4j的解析实例

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 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()方法获取元素值。

 

目录
相关文章
|
5月前
|
JavaScript 前端开发 Go
CSS 与 JS 对 DOM 解析和渲染的影响
【10月更文挑战第16天】CSS 和 JS 会在一定程度上影响 DOM 解析和渲染,了解它们之间的相互作用以及采取适当的优化措施是非常重要的。通过合理的布局和加载策略,可以提高网页的性能和用户体验,确保页面能够快速、流畅地呈现给用户。在实际开发中,要根据具体情况进行权衡和调整,以达到最佳的效果。
|
2月前
|
存储 运维 资源调度
阿里云服务器经济型e实例解析:性能、稳定性与兼顾成本
阿里云经济型e云服务器以其高性价比、稳定可靠的性能以及灵活多样的配置选项,成为了众多企业在搭建官网时的首选。那么,阿里云经济型e云服务器究竟怎么样?它是否能够满足企业官网的搭建需求?本文将从性能表现、稳定性与可靠性、成本考虑等多个方面对阿里云经济型e云服务器进行深入剖析,以供大家参考选择。
130 37
|
2月前
|
存储 Java 计算机视觉
Java二维数组的使用技巧与实例解析
本文详细介绍了Java中二维数组的使用方法
54 15
|
4月前
|
存储 负载均衡 监控
数据库多实例的深入解析
【10月更文挑战第24天】数据库多实例是一种重要的数据库架构方式,它为数据库的高效运行和灵活管理提供了多种优势。在实际应用中,需要根据具体的业务需求和技术环境,合理选择和配置多实例,以充分发挥其优势,提高数据库系统的性能和可靠性。随着技术的不断发展和进步,数据库多实例技术也将不断完善和创新,为数据库管理带来更多的可能性和便利。
162 57
|
3月前
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
205 5
|
3月前
|
存储 网络协议 算法
【C语言】进制转换无难事:二进制、十进制、八进制与十六进制的全解析与实例
进制转换是计算机编程中常见的操作。在C语言中,了解如何在不同进制之间转换数据对于处理和显示数据非常重要。本文将详细介绍如何在二进制、十进制、八进制和十六进制之间进行转换。
103 5
|
4月前
|
存储 机器学习/深度学习 编解码
阿里云服务器计算型c8i实例解析:实例规格性能及使用场景和最新价格参考
计算型c8i实例作为阿里云服务器家族中的重要成员,以其卓越的计算性能、稳定的算力输出、强劲的I/O引擎以及芯片级的安全加固,广泛适用于机器学习推理、数据分析、批量计算、视频编码、游戏服务器前端、高性能科学和工程应用以及Web前端服务器等多种场景。本文将全面介绍阿里云服务器计算型c8i实例,从规格族特性、适用场景、详细规格指标、性能优势、实际应用案例,到最新的活动价格,以供大家参考。
|
5月前
|
XML 数据格式
HTML 实例解析
本文介绍了HTML中常见元素的使用方法,包括`&lt;p&gt;`、`&lt;body&gt;`和`&lt;html&gt;`等。详细解析了这些元素的结构和作用,并强调了正确使用结束标签的重要性。此外,还提到了空元素的使用及大小写标签的规范。
|
5月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
5月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器

推荐镜像

更多