SAXReader的使用

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

一:导入依赖

<dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version>
</dependency>

假设xml文件内容如下

<?xml version="1.0" encoding="utf-8"?><data><head name="EASYSCAN" version="3.3.4"><action>1009</action><sessionid>72a9825f0f6d4d2eb732d714fb205188</sessionid></head><body><uploadbatch uniqueid="48e5606521ce459f8128848b8171eb17"><group caseno="202009071001"><doc doccode="202009071001"></doc></group></uploadbatch></body></data>

1:获取根元素

public class Readxml {public static void main(String[] args) {SAXReader saxReader = new SAXReader();try {Document document = saxReader.read(new File("D:\\saxreader.xml"));Element rootElement = document.getRootElement();System.out.println("name:" + rootElement.getName());System.out.println("data:" + rootElement.getText());} catch (DocumentException e) {e.printStackTrace();}}
}

结果:
在这里插入图片描述
根元素为data,没有值,因为data里面全是元素节点

2:遍历所有子元素

public class Readxml {public static void main(String[] args) {SAXReader saxReader = new SAXReader();try {Document document = saxReader.read(new File("D:\\saxreader.xml"));Element rootElement = document.getRootElement();System.out.println("name:" + rootElement.getName());System.out.println("data:" + rootElement.getText());System.out.println("--------------");Iterator<Element> iterator = rootElement.elementIterator();while (iterator.hasNext()) {Element next = iterator.next();System.out.println(next.getName() + ":" + next.getText());}} catch (DocumentException e) {e.printStackTrace();}}
}

结果:
在这里插入图片描述
根元素data下有两个子节点:head,body

3:只要其中一个子元素并取属性值(一)

public class Readxml {public static void main(String[] args) {SAXReader saxReader = new SAXReader();try {Document document = saxReader.read(new File("D:\\saxreader.xml"));Element rootElement = document.getRootElement();System.out.println("name:" + rootElement.getName());System.out.println("data:" + rootElement.getText());System.out.println("--------------");//获取跟节点下所有head节点Iterator<Element> iterator = rootElement.elementIterator("head");while (iterator.hasNext()) {//next 指的是head ,因为xml文件跟节点下可能不止一个head节点Element next = iterator.next();System.out.println(next.getName());System.out.println("head的属性name的值:" + next.attribute("name").getValue());//获取head下所有action节点Iterator<Element> actionElement = next.elementIterator("action");while (actionElement.hasNext()) {Element action = actionElement.next();System.out.println("head节点下的"+action.getName() + "节点的值:" + action.getText());}}} catch (DocumentException e) {e.printStackTrace();}}
}

在这里插入图片描述

4:只要其中一个子元素并取属性值(二)

public class Readxml {public static void main(String[] args) {SAXReader saxReader = new SAXReader();try {Document document = saxReader.read(new File("D:\\saxreader.xml"));Element rootElement = document.getRootElement();System.out.println("name:" + rootElement.getName());System.out.println("data:" + rootElement.getText());System.out.println("--------------");List<Element> headList = rootElement.selectNodes("head");if(headList.size()>0){Element head = headList.get(0);System.out.println(head.getName());System.out.println(head.getText());}else{System.out.println("xml文件有误");}} catch (DocumentException e) {e.printStackTrace();}}
}

在这里插入图片描述
错误是缺少依赖

<dependency><groupId>jaxen</groupId><artifactId>jaxen</artifactId><version>1.1.1</version></dependency>

再次运行
在这里插入图片描述

public class Readxml {public static void main(String[] args) {SAXReader saxReader = new SAXReader();try {Document document = saxReader.read(new File("D:\\saxreader.xml"));Element rootElement = document.getRootElement();System.out.println("name:" + rootElement.getName());System.out.println("data:" + rootElement.getText());System.out.println("--------------");List<Element> headList = rootElement.selectNodes("head");if(headList.size()>0){Element head = headList.get(0);System.out.println(head.getName());System.out.println(head.getText());System.out.println("head的name属性的值:"+head.attribute("name").getValue());List<Element> actionList = head.selectNodes("action");if(actionList.size()>0){Element action = actionList.get(0);System.out.println("head下节点"+action.getName()+"的值:"+action.getText());System.out.println();}}else{System.out.println("xml文件有误");}} catch (DocumentException e) {e.printStackTrace();}}
}

在这里插入图片描述
selectNodes重要语法可自行百度
这里讲解一下selectNodes(“a”)和selectNodes("/a")的区别

element.selectNodes(“a”):从当前节点的儿子节点中选择名称为 a 的所有节点。
element.selectNodes("/a"):获取根节点a下的所有子节点,这里a为根节点
结合本xml,应该这样(data为根节点)
List list = rootElement.selectNodes("/data/head");
System.out.println(list.size());
System.out.println(list.get(0).getName());

结果:
在这里插入图片描述


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

相关文章

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天试用之后必须要登录才能使用 社区版是无…

Visual Studio 2017 version 15.9 官方最新版本下载(含那个啥码)

Visual Studio 2017 version 15.9 官方最新版本下载 (含那个啥码) 简单介绍&#xff0c;VS2017有3个版本&#xff1a; ①community&#xff0c;社区版&#xff0c;含基本的开发功能&#xff0c;免费!免费!免费! ②professional&#xff0c;专业版&#xff0c;社区版的加强版&a…

【官方解说】Visual Studio 2017(VS 2017)各个版本有什么区别

细致区别如上图所示 企业版点满图中技能树&#xff0c;能够提供点对点的解决方案&#xff0c;充分满足正规企业的要求。 PS&#xff1a;技能最多&#xff0c;肯定也就价格最贵 专业版中提供的专业开发者工具、服务和订阅就成了最佳选择。 PS&#xff1a;技能多&#xff0c;价…