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

article/2025/10/11 8:05:09

第一种方式:

1. 加入jar包

注意

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

     2.2 jar包两个都需要。


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>

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();}}
}

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 

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

第二种方式:

1.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.结果

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

参考文档:https://blog.csdn.net/u011291072/article/details/53492461


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

相关文章

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…

VS2017社区版Community 许可证过期解决方法

之前过期可以登录自己的github账号再认证一下就OK了&#xff0c;但是这次就是登录不上会有脚本错误的弹窗&#xff0c;搜到一个方法亲测有效&#xff0c;也非常简单&#xff0c;找一个同等开发环境&#xff0c;把对应路径下的许可证文件夹拷贝放到自己的文件夹下即可。 感谢各…

下载安装Visual Studio 2017 Community 来编译NIM_PC_DEMO

1、下载vs2017的引导程序 官方并没有为vs2017提供离线安装包&#xff0c;所以我们选择在线安装。 首先我们下载vs2017的引导程序&#xff1a;Visual Studio 2017安装包 包含如下4个文件&#xff1a; vs_Community.exe&#xff1a; 社区版&#xff0c;免费。但是需要登录微软…

Visual Studio 2019社区版许可

Visual Studio 2019社区版许可 #VS2019版本介绍 Visual Studio Community&#xff1a;社区版 Visual Studio Professional&#xff1a;专业版 Visual Studio Enterprise&#xff1a;企业版 Community&#xff1a;社区版&#xff0c;30天试用之后必须要登录才能使用 社区版是无…