DOM4J及SAXReader解析xml文件数据

article/2025/10/11 8:06:17

1、DOM4J简介

DOM4J是 dom4j.org 出品的一个开源 XML 解析包。DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP。DOM4J 使用起来非常简单。只要了解基本的 XML-DOM 模型,就能使用。Dom:把整个文档作为一个对象。DOM4J 最大的特色是使用大量的接口。主要接口都在org.dom4j里面定义,如下:

  • Attribute:定义了 XML 的属性。

  • Branch:指能够包含子节点的节点。如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为

  • CDATA:定义了 XML CDATA 区域

  • CharacterData:是一个标识接口,标识基于字符的节点。如CDATA,Comment, Text.

  • Comment:定义了 XML 注释的行为

  • Document:定义了XML 文档

  • DocumentType:定义 XML DOCTYPE 声明

  • Element:定义XML 元素

  • ElementHandler:定义了Element 对象的处理器

  • ElementPath:被 ElementHandler 使用,用于取得当前正在处理的路径层次信息

  • Entity:定义 XML entity

  • Node:为dom4j中所有的XML节点定义了多态行为

  • NodeFilter:定义了在dom4j 节点中产生的一个滤镜或谓词的行为(predicate)

  • ProcessingInstruction:定义 XML 处理指令

  • Text:定义 XML 文本节点

  • Visitor:用于实现 Visitor模式

  • XPath:在分析一个字符串后会提供一个 XPath 表达式

2、SAXReader解析xml文件数据

2.1、加入jar包

  • xml文件解析时编码要一致(默认UTF-8),出现报错可以在记事本中另存为来更改编码格式。
  • jar包两个都需要

2.2、gao.xml数据

<?xml version="1.0" encoding="UTF-8"?>
<emps><emp><id>1</id><name>张三</name><age>26</age><gender></gender><salary>3000</salary></emp><emp><id>2</id><name>李四</name><age>21</age><gender></gender><salary>2000</salary></emp><emp><id>3</id><name>王五</name><age>28</age><gender></gender><salary>6500</salary></emp><emp><id>4</id><name>赵六</name><age>28</age><gender></gender><salary>5500</salary></emp><emp><id>5</id><name>钱七</name><age>53</age><gender></gender><salary>12000</salary></emp><cmp department="总经办"><id>007</id><name>董事长</name><age>52</age><gender></gender><salary>100000</salary></cmp>
</emps>

2.3、XmlDemo.java代码

package me.gorden.xml;import java.io.File;
import java.util.List;import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;public class XmlDemo {public static void main(String[] args) {try {// 创建SAXReaderSAXReader reader = new SAXReader();//从xml文件获取数据  Document document = reader.read(new File("E:\\00_MeWockSpace\\MyEclipse 12\\xmlDemo\\src\\gao.xml"));// 获取根节点 empsElement root = document.getRootElement();// 查找指定节点名称QName的所有子节点elementsList<Element> list = root.elements("emp");  //得到所有emp元素System.out.println("list==>"+list);for (Element element : list) { //循环输出全部emp的相关信息  System.out.println("element.getName()==>"+element.getName());List<Element> list2 = element.elements(); //得到emp元素下的子元素for (Element e : list2) {  //遍历emp元素下的子元素System.out.print(e.getName()+":");  //获取子元素名称System.out.print(e.getText()+" ");  //获取子元素的文本值}System.out.println();}} catch (Exception e) {e.printStackTrace();}}
}

2.4、运行结果

list==>[org.dom4j.tree.DefaultElement@168afdd [Element: <emp attributes: []/>], org.dom4j.tree.DefaultElement@1f21056 [Element: <emp attributes: []/>], org.dom4j.tree.DefaultElement@10e8647 [Element: <emp attributes: []/>], org.dom4j.tree.DefaultElement@91cf0b [Element: <emp attributes: []/>], org.dom4j.tree.DefaultElement@b00ec2 [Element: <emp attributes: []/>]]
element.getName()==>emp
id:1 name:张三 age:26 gender:男 salary:3000 
element.getName()==>emp
id:2 name:李四 age:21 gender:女 salary:2000 
element.getName()==>emp
id:3 name:王五 age:28 gender:女 salary:6500 
element.getName()==>emp
id:4 name:赵六 age:28 gender:男 salary:5500 
element.getName()==>emp
id:5 name:钱七 age:53 gender:男 salary:12000

2.5、ReadXml.java文件和上面的不一样,其余的都是一样的

package me.gorden.xml;import java.io.File;
import java.util.List;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;public class ReadXml {public static void main(String[] args) throws DocumentException {File file = new File("E:\\00_MeWockSpace\\MyEclipse 12\\xmlDemo\\src\\gao.xml");System.out.println("file===>"+file);// 创建SAXReaderSAXReader reader = new SAXReader();// 用SAXReader来读取文件,并转换成DocumentDocument document = reader.read(file);//用Document的selectNodes来读取节点,返回listList<Object> list = document.selectNodes("/emps/emp/name");Element e = null;if(list.size()>0){e = (Element) list.get(0);}System.out.println("list.size()==>"+list.size());if(null != e){Object obj = e.getData();System.out.println("Element内容为:  "+obj);}else{System.out.println("Element内容为空");}}
}

2.6、运行结果

file===>E:\00_MeWockSpace\MyEclipse 12\xmlDemo\src\gao.xml
list.size()==>5
Element内容为:  张三

3、总结

  • 读取xml数据
    SAXReader可以通过多种方式读取xml数据,并返回Document格式的对象。通过查看源码,可看出read()方法接收File,InputStreamURL等格式的参数来读取相应的xml数据。在代码里,读取xml文档和xml格式的字符串两种方式。字符串要根据相应的编码转成输入流才能被SAXReader读取。
  • 解析xml数据
    读取到Document对象后,使用getRootElement()方法获取根元素,返回的是一个Element对象。在本例中,该元素的name即为emps。
  • 获取子元素数据
    获取根元素后,便可以一层一层的去获取他的子元素信息。如果知道子元素的标签名称,便可以直接调用element(“name”)方法获取该子元素。如果不知道子元素的名称,或者想直接获取该元素下的全部子元素,可以调用elements()方法获取一个包括全部元素的list,然后进行下一步的处理。
  • 输出元素信息
    调用getName()方法获取当前元素的元素名,attributeValue()获取属性名。如果当前元素没有子元素,则调用getText()方法获取元素值。

http://chatgpt.dhexx.cn/article/ohpWj85q.shtml

相关文章

告别996-SAXReader读取xml配置文件

在公司某一模块开发中,可以获取全部字段,但是需要取出某些不需要的字段,于是采取动态方法结合xml,将不需要的字段写在xml里面.或者根据下拉框中的值动态的获取某一个筛选条件集合sql筛选出需要的条件 前提准备 文件名:xxxxxxx.xml <?xml version"1.0" encoding…

Java 应用SAXReader 解析网络地址 XML

xml格式&#xff1a; 依赖于dom4j 框架自带该依赖包springboot框架中 工具类如下&#xff1a; import com.alibaba.fastjson.JSONObject; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader;import java.net.URL;/*** SAXReader 解析 xml 工…

XML学习总结(三)——SAXReader解析xml文件数据

第一种方式&#xff1a; 1. 加入jar包 注意 1.1 xml文件解析时编码要一致&#xff08;默认UTF-8&#xff09;&#xff0c;出现报错可以在记事本中另存为来更改编码格式。 2.2 jar包两个都需要。 2.gao.xml数据如下&#xff1a; <?xml version"1.0" encoding&qu…

SAXReader解析xml

SAXReader解析xml文件 要使用SAXReader解析xml文件&#xff0c;就需要导入两个架包&#xff1a;版本自己选择。 &#xff08;1&#xff09;dom4j-1.6.1.jar dom4j下载地址 &#xff08;2&#xff09;jaxen-1.1-beta-6.jar jaxen下载地址 项目的搭建如下&#xff1a; 项目的配置…

SAXReader的使用

一&#xff1a;导入依赖 <dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version> </dependency>假设xml文件内容如下 <?xml version"1.0" encoding"utf-8"?…

SAXReader解析xml文件

dom4j是Java的XML API&#xff0c;作用是读写XML文件 第1步&#xff1a;导入maven依赖 <!--测试SaxReader解析xml文件--> <dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version> &l…

AWS 创建 pem 文件

创建后会根据你输入的名字创建一个pem文件&#xff0c;并根据提示下载到本地&#xff0c;然后上传到 Linux 服务器上&#xff0c; 用 pscp 命令&#xff1a; 1. 下载 pscp.exe, 存放在 windows/system32 目录下, 下载地址&#xff1a;https://www.chiark.greenend.org.uk/~sgta…

openssl cer文件转pem文件

在windows机器上安装openssl工具&#xff0c;如果已经安装Loadrunner工具&#xff0c;则可以直接使用。因为在Loadrunner的安装目录bin下&#xff0c;已经有openssl工具直接点击运行即可 如果没装LR,在windows中&#xff0c;点击【开始】&#xff0c;在输入框输入【cmd】&#…

使用pem文件进行ssh登录

一、简介 在这篇文章中,我们将详细的介绍如何使用pem文件实现ssh登录。 ssh作为基础服务,与我们每天的工作息息相关,其登录方式也多种多样,在这篇文章中我们将讲解安全性比较高的pem登录方式如何配置。 从ssh客户端来看,大致可以分为windows客户端,比如Putty,SecureC…

使用Java代码生成RSA公私钥的.pem文件

大家好&#xff0c;我是神韵&#xff0c;是一个技术&生活博主。出文章目的主要是两个&#xff0c;一是好记忆不如烂笔头&#xff0c;记录总结中提高自己。二是希望我的文章可以帮到大家。欢迎大家留言讨论&#xff0c;你们的行动将是我无限的动力。 本篇主题是&#xff1a;…

妙借Git自带的OpenSSL生成RSA公私钥的.pem 文件

大家好&#xff0c;我是神韵&#xff0c;是一个技术&生活博主。出文章目的主要是两个&#xff0c;一是好记忆不如烂笔头&#xff0c;记录总结中提高自己。二是希望我的文章可以帮到大家。欢迎来点赞打卡&#xff0c;你们的行动将是我无限的动力。 本篇主题是&#xff1a;妙…

Windows Terminal 使用 pem 文件连接服务器

示例: ssh -i C:\Users\dev\key.pem root18.18.18.18

linux ssh pem 登陆,Linux 生成pem文件 用于免密登录

1.在远程机器生成.pem文件 生成密钥对&#xff1a; $ ssh-keygen -t rsa -b 2048 -v 直接确认下一步 查看生成的密钥对&#xff1a; $ ls ~/.ssh/ 将私钥重命名至id_rsa.pem&#xff1a; $ mv ~/.ssh/id_rsa ~/.ssh/id_rsa.pem 修改~/.ssh/目录权限&#xff1a; $ chmod 700 ~/…

vscode 使用pem文件免密连接服务器

操作步骤和vscode 配置免密连接服务器很相似&#xff0c;不过使用的是 pem 文件。步骤如下&#xff1a; 将 pem 文件放在 ~/.ssh/ 文件夹下&#xff08;可选&#xff09;&#xff1b; 配置 ~/.ssh/config &#xff0c;填写需要连接的主机信息&#xff1a; Host my_server_name…

php生成pem文件怎么打开,iOS推送证书生成pem文件(详细步骤)

1、pem文件概述 pem文件是服务器向苹果服务器做推送时候需要的文件&#xff0c;主要是给php向苹果服务器验证时使用&#xff0c;下面介绍一下pem文件的生成。 2、生成pem文件步骤 1、打开钥匙串&#xff0c;选择需要生成的推送证书 选择相应证书 2、将Certificate和Private key…

从openssl rsa pem文件中提取公私钥数据实现

RSA为非对称加密算法&#xff0c;关于其介绍可以参考&#xff1a;https://blog.csdn.net/fengbingchun/article/details/43638013。 OpenSSL最新版为 1.1.1g&#xff0c;在Windows上和Linux上编译源码时均可以生成可执行文件openssl。通过此执行文件即可产生rsa公钥-私钥对&am…

搞懂 PEM、ANS、PFX、P12、p8、CER、X509 等证书相关文件格式 后缀

文章目录 结论ASN.1PEM.pfx介绍应用 .p12.p8.cer.crtX.509参考 http证书相关的文件格式、编码、概念比较偏多。这里对文件的各种文件后缀和格式做了统一的整理和解释说明 我在国密实验室申请下载了一个证书&#xff0c;解压后如下图&#xff0c;起初我是比较懵的&#xff0c;各…

vs2017下载

1.官网下载 由于网络日益发达&#xff0c;我相信大家可以从各种渠道得到下载地址&#xff0c;vs2017已与之前版本不同的是已经采用了下载器下载&#xff0c;下面是我使用的下载地址 Visual Studio 较旧的下载 - 2017、2015 和以前的版本 进入登录即可获得下载地址&#xff0c…

Visual Studio 2015官方社区版/专业版/专业版下载地址

Visual Studio 2015官方社区版/专业版/专业版下载地址 以下 Visual Studio 2015 社区版/专业版/专业版资源都是官方MSDN原版下载资源&#xff0c;统一为ISO格式镜像&#xff0c;使用解压软件解压之后点击主程序安装即可。 Visual Studio 2015 官方简体中文专业版ISO镜像下载地址…

vs2017支持所有版本VC

版权归属&#xff1a; https://blog.csdn.net/halchanchanhaloutlook.com 更多关注&#xff1a; https://github.com/chanhalhttps://www.zhihu.com/people/chanhal 前言 研究目标&#xff1a;VS2017作为目前最新的IDE&#xff0c;让其支持所有版本的VC编译环境 必要性&am…