XML之XML解析

XML的解析 目录一、Java中配置文件的三种配置位置及读取方式同包根路径WIN-INF安全路径二、XML解析方式什么是DOM4J?DOM4J常用方法XPath的使用 案例: 根路径 WIN-INF安全路径 二、XML解析方式 xml解析方式有四种:DOM解析、SAX解析、DOM4J解析、JDOM解析。今天着重讲的是DOM4Jdom4j 是一个简单的开源库,用于处理 XML、 XPath 和 XSLT,它基于 Java 平台,使用 Java 的集合框架,全面集成了 DOM 阅读详情

今日金句

道阻且长,行则将至,行而不辍,未来可期

一、XML解析

1.1概念

XML 解析是将 XML 文件中的数据解析到程序中的过程。

XML 解析的过程是对 XML 文档结构逐步扫描和解析,然后读入内存。

XML 解析器读取文件时,按照 XML 文档的结构分解文件,解析并存储 XML 处理过程中所发现的元素、属性、文本和 CDATA 等数据。在完成解析后,程序可以通过解析器提供的 API 访问数据结构并对数据进行处理。

1.2 特点

1.2.1可读性强

XML 文件是基于文本的,易于阅读和理解,因此 XML 解析器可以读取文件内容并将其转化为易于处理的数据结构,方便后续的应用程序操作。

1.2.2 跨平台性好

由于 XML 语言的跨平台性,因此 XML 文件可以在不同的操作系统和应用程序之间进行数据传递。

1.2.3 灵活性高

在 XML 文件中,可以通过元素、属性、注释等多种方式定义数据和文档的结构,解析器可以根据定义的规则动态生成数据结构,适应各种应用场景。

1.2.4 可扩展性好

XML 语言具有很强的扩展性,可以扩展自定义元素和属性等,使得它能够适应不同的应用需求。

1.2.5 解析方式多样化

XML 解析器支持多种解析方式,包括 DOM、SAX、StAX 等。通过选择适当的解析器,可以根据具体情况选择最适合的解析方式,提高解析效率。

1.2.6 数据存储格式规范

通过定义 XML 文件的结构和数据类型等信息,可以确保数据在不同的应用程序和平台之间传递时保持规范的格式,避免了数据传输中数据格式的不兼容问题。

1.3体系

XML 解析体系通常包括四种解析方式,分别为:DOM 解析、SAX 解析、JDOM 解析和 DOM4J 解析。这些解析方式的区别在于解析 XML 文件的方式和结果的表现形式。

1.4配置文件不同配置位置下的读取方式

这里有一个properties文件

uname=mybatis_ssm
upass=xiaoli
url=jdbc:mysql://localhost:3306/mybatis_ssm
driver_Class=com.mysql.jdbc.Driver

initPoolSize=5
maxPoolSize=20

1.4.1同包

//		//获取资源
		InputStream io = Demo1.class.getResourceAsStream("db.properties");
		Properties p=new Properties();
		//读取后赋给p
		p.load(io);
		//打印
		System.out.println(p.getProperty("driver_Class"));//com.mysql.jdbc.Driver

1.4.2根路径

//		//获取资源
		InputStream io = Demo1.class.getResourceAsStream("/db.properties");
		Properties p=new Properties();
		//读取后赋给p
		p.load(io);
		//打印
		System.out.println(p.getProperty("driver_Class"));//com.mysql.jdbc.Driver

1.4.3web-inf 安全路径

package com.xqx.parse;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 读取安全路径下的文件
 */
@WebServlet("/webParse")
public class webParse extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);

	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		InputStream is = request.getServletContext().getResourceAsStream("/WEB-INF/db.properties");
		Properties p = new Properties();
		p.load(is);
		System.out.println(p.getProperty("driver_Class"));//com.mysql.jdbc.Driver

	}

}

二、DOM4J

2.1概念

DOM4J 是一种基于 Java 的高性能、高效、易扩展的 XML 解析器,它是基于 DOM 解析器的扩展。DOM4J 继承了 DOM 解析器的灵活性和易用性,同时还提供了更加丰富的 XPath 支持,并适用于对大型的、复杂的 XML 文件或需要频繁访问 XML 文件的部分内容的场景。

2.2特点

2.2.1性能高

DOM4J 在处理大型 XML 文件时具有很高的效率,比传统的 SAX 解析器更快。

2.2.2树形结构

DOM4J 采用了树形结构的方式来表示 XML 文档,程序可以通过遍历树形结构来处理 XML 数据。

2.2.3支持 XPath

XPath 是一种用于在 XML 文档中定位节点的语言,DOM4J 提供了强大的 XPath 支持,方便开发者定位和操作节点。

2.2.3易于扩展

DOM4J 具有很好的扩展性,开发者可以通过扩展 DOM4J API 来实现自定义的 XML 处理方法。

2.2.4支持文档类型定义(DTD)和 XML Schema

DOM4J 支持对 XML 文件进行验证,可以通过 DTD 或 XML Schema 等方式来验证 XML 文件的格式和正确性。

2.3常用方法

方法名称方法描述
read()使用 SAXReader 类的 read() 方法可以解析 XML 文件,返回代表整个文档的 Document 对象。
getRootElement()使用 Document 对象的 getRootElement() 方法可以获取 XML 文档的根节点。
elements()使用 Element 对象的 elements() 方法可以获取指定名称的子元素列表,并使用 Iterator 进行遍历元素。
element()使用 Element 对象的 element() 方法可以获取指定名称的第一个子节点。
attributeValue()使用 Element 对象的 attributeValue() 方法可以获取指定名称的属性值。
getText()使用 Element 对象的 getText() 方法可以获取当前元素的子元素、内容和尾随文本组合在一起的字符串。
addElement() 和 addAttribute()使用 DOM4J 提供的这些方法可以向某个元素中添加新的元素和属性。
setText() 和 setAttributeValue()使用 Element 对象的这些方法可以修改元素和属性的值。
remove() 和 removeAttribute()使用 Element 对象的这些方法可以删除元素和属性。
使用 XPath 表达式定位元素使用 DOM4J 提供的 selectNodes() 和 selectSingleNode() 方法可以使用 XPath 表达式定位元素。

2.4使用

这里有一个xml文件

<?xml version="1.0" encoding="UTF-8"?>
<students>
	<student sid="s001">
		<name>小明</name>
	</student>
	<student sid="s002">
		<name>小芳</name>
	</student>
	<student sid='s003'>
		<name>小王</name>
	</student>
</students>

读取以上文件信息

		InputStream is = Demo2.class.getResourceAsStream("students.xml");
		SAXReader sr = new SAXReader();
		Document document = sr.read(is);
		List<Element> list = document.selectNodes("students/student");
		for (Element element : list) {
			// System.out.println(element.asXML());
			Element name = (Element) element.selectSingleNode("name");
			System.out.println(name.asXML());
			System.out.println(element.attributeValue("sid"));
			System.out.println(name.getText());
		}

打印结果

<name>小明</name>
s001
小明
<name>小芳</name>
s002
小芳
<name>小王</name>
s003
小王

2.5XPath

XPath 是一种在 XML 中查找信息的语言,也是 DOM4J 中常用的定位元素的方法之一,它使用路径表达式来选取 XML 文档中的节点或节点集合。

2.5.1常用路径

路径表达式描述
/选择根节点。
//选择文档中的所有元素,而不考虑它们的位置。
.选择当前节点。
…选择父节点。
*选择所有元素节点。
@选择属性。
node()选择所有类型的节点,包括元素、属性、文本和注释节点等。
text()选择文档中的所有文本节点。
//[@name]选择所有包含名为name的属性的节点。
//[@name=‘value’]选择所有名为name的属性为value的节点。
//element[@attribute=‘value’]选择所有属性为value的element元素。
/element[position()]获得第一个 element 元素节点。
/element[position()=last()]获得最后一个 element 元素节点。
/element[position()>1]获得第二个及以上的 element 元素节点。

2.5.2常用方法

方法名描述
selectSingleNode(String xpath)选择符合 xpath 表达式的第一个节点,返回 Node 对象。
selectNodes(String xpath)选择符合 xpath 表达式的所有节点,返回 List 集合。
selectSingleNode(Element base, String xpath)选择以 base 为根元素的文档中符合 xpath 表达式的第一个节点,返回 Node 对象。
selectNodes(Element base, String xpath)选择以 base 为根元素的文档中符合 xpath 表达式的所有节点,返回 List 集合。
evaluate(String xpath, Object item, QName returnType)在 item 中选择符合 xpath 表达式的节点,并将结果转换为 returnType 类型。常用的类型有 Node、String、Number、Boolean 等。
XPath.selectSingleNode(Object node, String xpath)在 node 中选择符合 xpath 表达式的第一个节点,返回 Node 对象。node 可以是 Document、Element 等。
XPath.selectNodes(Object node, String xpath)在 node 中选择符合 xpath 表达式的所有节点,返回 List 集合。node 可以是 Document、Element 等。

2.5.3使用

	// //获取资源
		InputStream is = Demo2.class.getResourceAsStream("students.xml");
		SAXReader sr = new SAXReader();
		Document document = sr.read(is);
		List<Element> list = document.selectNodes("students/student");
		
		//拿到sid为s002的name
		System.out.println("===================dom4j解析方式=====================");
		for (Element element : list) {
			if ("s002".equals(element.attributeValue("sid"))) {
				Element name = (Element) element.selectSingleNode("name");
				System.out.println(name.getText());
			}
		}

		System.out.println("====================xpath解析方式============================");
		Element selectSingleNode = (Element) document.selectSingleNode("//student[@sid='s002']/name");
		System.out.println(selectSingleNode.getText());

打印结果:

===================dom4j解析方式=====================
小芳
====================xpath解析方式============================
小芳

三、DOM 解析

DOM(Document Object Model)解析器将整个 XML 文档读入内存,然后将其构造成一个完整的树形文档对象模型,可以通过节点、元素的方法来操作 XML 文档。这种方式适合读取和修改 XML 文档,并且支持对 XML 文档执行各种操作。缺点是不适合处理超大 XML 文件。

四、SAX 解析

SAX(Simple API for XML)解析器采用基于事件驱动的方式,逐行读取 XML 文档。当解析遇到一个节点时,就会发出事件,回调相应的方法来处理事件。这种方式适合处理超大 XML 文件,但只保存当前解析的节点,无法随意访问和修改 XML 数据。

五、JDOM 解析

JDOM(Java Document Object Model) 是一种基于 Java 的 XML 解析器,它提供了一种简单、易用且基于树形结构的 API,以便于对 XML 的操作。它可以将 XML 文件转换为一种更易于操作的形式,适合于频繁地读取和修改XML 文档。

好啦,今天的分享就到此为止!希望你看完本篇文章有所收获,祝你变得更强!!!

XML解析工具 读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。 立即下载

相关推荐

java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xml

java在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在线解析xmljava在

使用xmllint处理/验证xml

xmllint是一个很方便的处理及验证xml的工具,linux下只要安装libxml2就可以使用这个命令,下面整理一些常用功能 1. --format 此参数用于格式化xml,使其具有良好的可读性。 假设有xml(person.xml)内容如下: ball30male 执行: xmllint --format person.xml得到易读的xml ball 30 ma

未来可7 2万+

网格自适应_Comsol案例解析17:自适应网格的使用

本期导读自适应网格细化有许多优势,比如可以不用对网格进行全局加密,增加计算精度,又会降低求解自由度。本期仍然以气泡上升案例为例,在两相流模块中使用自适应网格。【打开案例模型】【修改网格】适当让气泡边界加密,注意,曲率因子越小,曲线上的网格越密【添加自适应网格】使用默认的参数即可,这里的误差指示器用的是水平集phi。可以根据具体求解模型选择适当的自变量作为误差指示器。【口诀】默认的一般是最...

weixin_28726871的博客 5681

windows Xmllint的配置及测试

Xmllint配置及测试xmllint安装步骤测试 xmllint安装步骤 如果您希望仅通过提供的实用程序(例如xmllint或xsltproc)使用libxml,那么您所需要做的就是将二进制包中bin目录的内容放在磁盘上的目录中,该目录在PATH环境变量中提到。 您可以使用路径中已经存在的现有目录,例如C:\ WINDOWS。 您也可以为libxml创建一个新目录并将文件放置在此处,但是请确保修改PATH环境变量并将该新目录添加到其列表中。 如果您使用其他需要libxml的软件,例如某些配置下的

西门吹雪 1901

LVGL移植教程(正点原子)

学习正点原子LVGL移植教程,根据视频教程写的博客

papalila的博客 939

Windows Server+SqlServer Always On实战:5步搞定高可用集群搭建

本文详细介绍了在Windows Server环境中,通过5个关键步骤搭建SQL Server Always On高可用集群的实战指南。内容涵盖从底层故障转移集群配置、SQL Server实例启用Always On功能,到创建可用性组和侦听器的完整流程,并提供了核心运维与故障排查思路,帮助企业构建稳定可靠的数据库高可用架构。

milk5的博客 858

XML解析

一,XML概述 1.什么是XML XML即为可扩展的标记语言(eXtensible Markup Language) XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识 2.XML和HTML不同之处 XML主要用于说明文档的主题,而HTML侧重描述文本的显示格式。 XML文档数据和格式分离,文档=文档数据+文档结构+文档样式

2302_80464795的博客 1335

通过JLink下载实现工控MCU批量烧录实战案例

利用JLink下载工具实现高效稳定的工控MCU批量烧录,提升产线效率。案例详细解析了脚本配置与自动化流程,突出jlink下载的可靠性和可扩展性,适用于大规模嵌入式部署场景。

weixin_30205153的博客 812

C++解析XML文件

C++读取XML文件

StarWang的博客 1万+

Allegro Design Entry CIS 与 OrCAD Capture CIS:PCB设计工具链中的双雄对决

本文深入对比了Cadence旗下两大原理图设计工具Allegro Design Entry CIS与OrCAD Capture CIS。Allegro Design Entry CIS源自Concept HDL,定位高端,强调自顶向下的层次化设计和与Allegro PCB Editor的无缝约束管理,适合大型复杂系统及团队协作。OrCAD Capture CIS则以其出色的易用性、广泛的兼容性和强大的CIS数据库功能著称,是中小型项目及跨工具链协作的通用选择。文章从历史渊源、核心功能、适用场景等多维度剖析,

bush的博客 486

点云中概念:匹配、配准、融合

匹配,是寻找与一幅图相似的图像(不对寻找到的图像做矫正)。 配准,是寻找相似图像但是变形后的图像(需要做一些旋转之类的校正变换)。 融合,是多幅图像连接成一幅大图,视频集成中用的比较多。 1)匹配: 2)配准: 比如由于固定式激光雷达受测量方式的限制和被测物体集合形状的限制,固定的话一次只能扫描被测物体有限范围的点云数据(比如一个面??),这需要在多个视角下进行多次扫描(就是将激光雷达前后左右四个面都扫一下??对的),然而每个视角下得到点云数据都具有独立的坐标系,无法直接进行拼接(拼接就是将四个面

m0_37957160的博客 1万+

什么是xml解析?xml解析的有几种常用的解析方式?

SAX解析只能查询,不能实现增删方法,不常用,这里就不过得介绍了

superliug的博客 6125

YOLO11改进|卷积篇|引入多样化分支块DBB

YOLO11中添加多样化分支块DBB

A1983Z的博客 1444

XML解析——Java中XML的四种解析方式

XML是一种通用的数据交换格式,它的平台无关性、语言无关性、系统无关性、给数据集成与交互带来了极大的方便。XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已。   XML的解析方式分为四种:1、DOM解析;2、SAX解析;3、JDOM解析;4、DOM4J解析。其中前两种属于基础方法,是官方提供的平台无关的解析方式;后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台。   针对以下XML文件,会对四种方式进行详细描述: <?xml version="1.0

qq_37272886的博客 4202

OpenClaw实战系列02:企业微信接入完全指南

本文详细介绍了如何将OpenClaw与企业微信对接,实现智能机器人功能。主要内容包括:企业微信侧创建智能机器人或自建应用,获取必要凭证和权限;OpenClaw侧安装配置企业微信插件,设置通信通道;完成双向验证并进行功能测试。文章提供了详细的配置步骤、常见问题排查方法和进阶玩法,帮助用户在30分钟内完成对接。关键点包括:确保URL可访问、Token一致、网关正常运行,以及针对不同部署环境(云服务器/内网)的配置差异。

PeterPan的博客 3811

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Python XML 解析

XML 指可扩展标记语言(eXtensibleMarkupLanguage)。你可以通过本站学习XML 教程XML 被设计用来传输和存储数据。XML 是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。Python 对 XML 的解析常见的 XML 编程接口有 DOM 和 SAX,这两种接口处理 XML 文件的方式不同,当然使用场合也不同。characters(content)方法。

qq_48368964的博客 1934

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

XML解析(一),SAX解析XML

一、概述 SAX,全称Simple API for XML,是一种以事件驱动的XMl API,是XML解析的一种新的替代方法,解析XML常用的还有DOC解析,PULL解析(Android特有),SAX与DOC不同的是它边扫描边解析,自顶向下依次解析,由于边扫描边解析,所以它解析XML具有速度快,占用内存少的优点,对于Android等CPU资源宝贵的移动平台来说是一个巨大的优势。 SAX的优点:解析速

宿罪的博客 3万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

XML 解析

一、五种解析方法 1、DOM解析 DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组织节点和信息片段,映射XML文档的结构,允许获取 和操作文档的任意部分,是W3C的官方标准【优点】 ①允许应用程序对数据和结构做出更改。 ②访问是双向的,可以在任何时候在树中上下导航,获取和操作任意部分的数据。【缺点】 ①通常需要加载整个XML文档来构造层次结构,消耗资源大。【解析详解】 ①构建Document对象: DocumentBuild...

qq_30436011的博客 5042

perl 解析xml_使用Perl的高级XML解析技术

对于种类繁多的Perl应用程序,选择的XML工具是XML::Simple ,这是本系列第1部分的主题(请参阅参考资料 )。 XML::Simple将XML输入文件转换为易于操作的Perl数据结构,并将这些数据结构写回XML。 但是请记住,这种方法在某些情况下不起作用。 当您需要在内存中构建XML文档的表示形式,然后以相当复杂或不可预测的方式搜索或转换XML文档时, XML::Simple并...

cuyi7076的博客 2289

xml文件解析 (DOM4J解析XML) -java

文章目录前言一、本地XML解析1、导包并配置1、在项目下新建lib文件夹,并把jar包导入。2、更改项目配置2、编写一个简单的本地XML文件3、解析本地XML文件:二、解析网络上的XML文件1.网址:2、来解析此网络XML文件总结 前言 今天,我们对xml文件进行解析。分别对本地的xml文件和网络上的xml文件进行解析。 提示:以下是本篇文章正文内容。 一、本地XML解析 1、导包并配置 1、在项目下新建lib文件夹,并把jar包导入。 2、更改项目配置 接下来 选中添加刚才创建的Libr

qq_43783709的博客 3371

XML篇之XML解析

什么是xml解析XML 解析是指对 XML 文档进行解析,从而获取文档中的数据信息的过程。XML(Extensible Markup Language)是一种用于存储和传输数据的标记语言。它和 HTML 相似,都是用标签来描述文档内容,但 XML 更加灵活和扩展,适用于存储和传输各种结构化数据。常见的 XML 应用包括 RSS、SOAP、Atom、SVG 等。XML 解析器是用于对 XML 文档进行解析的程序。XML 解析的方式一般有两种:DOM 解析和 SAX 解析。

m0_73329959的博客 2164

XML及XML的解析方式

XML写在前面的话简介为什么学习XMLXML文件XML语法格式1,XML文档声明2,标记(元素/ 标签/ 节点 )3,标记可以嵌套,但不能交叉4,一个XML文档中,必须有且仅有一个根标记5,标记的层级称号6,标记名称允许重复7,标记除了开始和结束,还有属性8,注释语法进阶CDATA(了解)DOM4解析XML解析步骤:文档对象 Document元素对象解析本地文件案例:解析网络文件案例:Xpath解析XML路径表达式使用步骤通过java生成XML步骤举例:XStream的使用(了解)使用步骤举例:Java如何

m0_58702068的博客 1072

java解析XML

概念:x(extensible)可扩展的 M(markup)标记/节点 L(language)语言 -->可扩展的标记语言. 一、XML语言的作用 1、存:特殊的文件,单级游戏里的等级和装备存到XML文件中 2、传:网络上传递数据 3、配置文件 二、XML文件的特点 跨平台性 多语言都支持XML语言 XML具有自我描述性:所有节点(元素)自定义 三、XML的语法规则 要有根节点,只能有一个 节点要有开始和结束<节点名...

asddasddeedd的博客 3922
上一篇: Java集合框架
下一篇: XML建模
许潜行
博客等级 码龄4年 302粉丝 75原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值