xml文件的dom4j解析

org.dom4j.Document的主要用法 dom4j一个处理XML配置文件的一大利器,一开始我只是学会了几个方法,方法整合一下,得到更多,学到更多 处理XML文件 第一步: 读取文件,必须要用一个io流存储 SAXReader可以通过多种方式读取xml数据,并返回Document格式的对象。通过查看源码,可以看出read()方法接收File,InputStream和URL等格式的参数来读取相应的xml数据。字符串要根据相应的编码转成输入流才能被SAXReader读取—》new ByteArrayInputStream(String) String 阅读详情


     dom4j解析xml文件,不用多说,这确实是一个非常优秀的解析xml的api。dom4j可以说在性能、功能上独树一帜,而且它同Jdom一样,有着简单易用的特性。

     说起dom4j的渊源,从名字上也让人觉得它跟Jdom有什么瓜葛,确实如此。这个团队本来都是本着开发一个更为简单易用的xml解析工具,可是后来团队中有不同的意见,于是一部人带着他们的思想,一起开发了dom4j。两个不同的思想,竞争起来当然使得团队要不惜一切的开发好产品。所以说Jdom与Dom4j都是很优秀的xml解析api。
     不过,总的来说,Dom4j相对来说比较受青睐,它具备了 极为强大的解析能力,且支持XPath,越来越多的软件中都使用dom4j来作为xml的解析。
     使用dom4j要使用到其提供的api,可从 http://sourceforge.net/projects/dom4j/files/latest/download下载, dom4j的开发包中包含一些第三方开发包,当调用dom4j某些功能需要添加相应的开发包,大部分情况下,在项目中导入基本的dom4j.jar即可。
下面是一个要解析的person.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<persons>
	<person id="328">
		<name>zhangsan</name>
		<age>23</age>
	</person>
	<person id="303">
		<name>lisi</name>
		<age>22</age>
	</person>
</persons>
将解析后的数据封装在Person类中,类如下:
public class Person {
	private int id;
	private String name;
	private int age;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + id;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Person other = (Person) obj;
		if (age != other.age)
			return false;
		if (id != other.id)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
	}

	public Person(int id, String name, int age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}

	public Person() {
		super();
	}
}

导入dom4j.jar,使用Dom4j对person.xml进行解析,注意导正确的包,以免不必要的错误:
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Dom4JTest {

	public static void main(String[] args) {
		try {
			//取得dom4j的解析器
			SAXReader reader = new SAXReader();
			//获取xml文件的输入流
			InputStream inStream = Dom4JTest.class.getClassLoader()
					.getResourceAsStream("person.xml");
			//取得代表文档的Document对象
			Document document = reader.read(inStream);
			//取得根结点
			Element root = document.getRootElement();
			
			ArrayList<Person> persons = new ArrayList<Person>();
			Person person = null;
			//取得根节点的子结点,并进行遍历取出数据,封装在Person中
			List list = root.elements();
			for (int i = 0, size = list.size(); i < size; i++) {
				person = new Person();
				//或取第一个子结点<person>
				Element e = (Element) list.get(i);
				//获取属性id
				String id = e.attributeValue("id");
				person.setId(Integer.valueOf(id));
				//遍历<person>的子结点,以便取出数据。
				List ce = e.elements();
				for (int j = 0, csize = ce.size(); j < csize; j++) {
					Element tempE = (Element) ce.get(j);
					String qName = tempE.getName();
					//根据结点的名称,将数据封装于Person类的对象中。
					switch (qName) {
					case "name":
						String name = tempE.getText();
						person.setName(name);
						break;
					case "age":
						String age = tempE.getText();
						person.setAge(Integer.valueOf(age));
						break;
					}
				}
				//结束一轮<person>结点的遍历,将person对象存入集合,并清空。
				persons.add(person);
				person = null;
			}
			//打印集合。
			printList(persons);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}
	//打印集合。
	public static void printList(ArrayList<Person> persons) {
		for (Person p : persons) {
			System.out.println(p);
		}
	}
}



Dom4j完整教程 Dom4j完整教程 目录 Dom4j完整教程 1、DOM4J简介 2、XML文档操作1 2.1、读取XML文档: 2.2、获取根节点 2.3、.新增一个节点以及其下的子节点与数据 2.4、写入XML文件 2. 5、遍历xml节点 2.6、创建xml文件 2.7、修改节点属性 2.8、删除节点 2、XML文档操作2 2.1、Document对象相关... 阅读详情

相关推荐

java中使用Dom4j的xPath解析xml文件

一、基本概念 1、XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。 XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。 XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初 XPath 的提出的初衷是将 其作为一个通用的、介于XPointer与XSL间的语法模型。但是 XPath 很快的被开...

十豆三展的博客 5292

Dom4j解析XML

1.XML解析的方式介绍 在日常开发中常见的XML解析方式有如下两种:1.DOM解析 DOM解析要求解析器将整个XML文件全部加载到内存中,生成一个Document对象。 1.优点:元素和元素之间保留结构,关系,可以针对元素进行增删改查操作。 2.缺点:如果XML文件过大,可能会导致内存溢出。2.SAX解析 SAX解析是一种更加高效的解析方式。它是逐行扫描,边扫描边解析,并且以时间驱动的方式进行具体的解析,每解析一行都会触发一个事件。 1.优点:不会出现内存溢出的问题,可以处理大文件。 2.缺点:只能读,不

az44yao的专栏 2149

Matlab R2024a硬件支持包安装避坑指南:以Arduino为例(附离线包下载)

本文详细介绍了Matlab R2024a硬件支持包(Support Package)的安装流程,特别是针对Arduino平台的避坑指南和高效部署方法。从环境准备、离线安装方案到Arduino支持包的专项优化,提供了全面的技术细节和解决方案,帮助开发者避免常见错误,实现快速部署。

weixin_33737134的博客 447

学习:Dom4j和Xpath

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

weixin_34186950的博客 358

STM32G474的HRTIM实战:用CubeMX配置互补PWM驱动全桥电路(附移相算法代码)

本文详细介绍了如何使用STM32G474的HRTIM高分辨率定时器,通过CubeMX配置互补PWM驱动全桥电路,并附移相算法代码。内容涵盖HRTIM硬件架构解析、CubeMX配置全流程、移相控制算法实现及调试技巧,为数字电源和电机控制领域提供实用解决方案。

weixin_27017211的博客 482

基于Super-Jacoco的精准测试实践之路

灵魂拷问这个版本的影响范围到底有多大?研发改动了代码,为什么不通知测试?测试用例真的全面覆盖了吗?测试同学的测试覆盖情况该怎么评估?什么是精准测试概念借助技术手段、通过辅助算法对软件测试过...

咻咻ing的专栏 5841

java中采用dom4j解析xml文件

一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式;但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4j解析xml的具体操作。 二.代码详情 dom4j是一个第三方开发组开发出的插件,所以在我们使用dom4jf的时候我们要去下载一下dom4j对应版本的jar导入在我们项目中。 1...

论菜鸟的自我修养。。。 3万+

同花顺Supermind量化交易 风险控制建模--海龟交易法则

A.市场与标的海龟交易法则应用于流动性高的市场中,选择交易量较大的标的进行交易。本文以沪深300指数ETF为标的,构建海龟交易法则。B、仓位:仓位是海龟交易系统最核心的部分,通过ATR真实波幅指标来管理仓位。第一步:计算True Range,简称TR。TR = Max ( H−L , H−P , P−L ) ,其中H为当日日内最高价,L为当日日内最低价,P为前一日收盘价。第二步:计算ATRATR = mean ( TR , 20 ) , 即计算过去20天的TR的平均值,ATR是TR的移动平均值。

qq_22808537的博客 1497

使用Dom4j解析XML文件

使用Dom4j解析XML文件

junR_980218的博客 5652

一文读懂AI大模型时代的RAG技术

RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合检索技术与生成模型的技术架构,旨在通过动态引入外部知识库增强大语言模型(LLM)的生成能力。其核心思想是通过检索系统从外部数据源(如企业知识库、实时文档等)获取相关信息,并将检索结果作为上下文输入生成模型,以提高生成答案的准确性、时效性和专业性

awei0916的专栏 2119

(8)(8.19) GPIOs

Ardupilot官网关于《Copter》的翻译 —《(8.19) GPIOs》。

无人机开发(开源Ardupilot) 1万+

Java--dom4j解析xml、读取xml文件

Dom4j是一个开源的 XML 解析框架,它基于 Java 的sax 解析器和jaxp 解析器开发,提供了灵活简便、性能优良、扩展性强的 XML 解析和生成功能。Dom4J通过SAXReader对象加载并解析xml文件,把它转换为内存中的Document对象,接着对Document对象中的元素进行添加、更新和删除操作,并且通过XMLWriter对象把修改后的Document对象保存到xml文件中。

2301_76890677的博客 2409

SAE ARP 4761A内容详解

SAE ARP 4761A主要为民用航空系统及设备的安全评估提供指南,帮助制造商和设计者满足FAA的FAR 25.1309等适航标准的要求。该文档旨在为航空器和航空系统设计中涉及的安全评估流程提供一个结构化的框架,并结合一系列工具和方法,如故障树分析(FTA)、依赖图分析(DD)、马尔可夫分析(MA)等,来系统地评估潜在的安全隐患。这一标准不仅适用于大型航空器的设计和评估,还可以应用于各种类型的飞行系统,如无人驾驶飞行器(UAV)和新型的电动垂直起降飞机(eVTOL)。

qq_41854911的博客 3149

【DOM4J】Java中使用 DOM4J解析XML文件,解析Mybatis Mapper xml文件思路。

/这里相当于进入了Select标签元素内部break;break;// 添加注释break;以上对整个XML做了一个遍历,第一个for循环是对xml总体做了一个遍历,而内部则是开始获取的内容,这里通过。

RudolphLiu的博客 2212

开源大语言模型GLM-5:从架构解析到部署微调全指南

大语言模型(LLM)作为当前人工智能领域的核心技术,通过海量数据预训练获得强大的语言理解和生成能力。其核心原理基于Transformer架构,通过自注意力机制捕捉长距离依赖关系,在通用语言任务上展现出卓越性能。这一技术价值在于为开发者提供了强大的基座模型,能够通过微调快速适配特定领域需求,显著降低AI应用开发门槛。在实际应用场景中,大模型被广泛用于智能对话、代码生成、内容创作等任务。本文以开源项目GLM-5为例,深入探讨其架构特点,并详细介绍了如何使用LoRA技术进行参数高效微调,以及通过量化优化实现模型在

weixin_28683165的博客 350

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

dom4j简单解析xml文件

XML即为可扩展标志语言(eXtensible Markup Language)。标记指的是计算机所能理解的信息符号,通过标记,计算机就可以解析处理相关的数据。可以通过HTML定义这些标记,同时也可以使用像XML这昂扬的相关人士自由决定的标记语言,这就是语言的可扩展性。

qq_52147099的博客 338

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

dom4j 解析xml文件

dom4j解析xml分析总结: 概括来说, 一个xml文件由三个要素组成: 元素: 属性: name="blog">元素值与属性值: "blog">blog text 因此创建, 解析xml文档也就是围绕这几个要素来展开的, dom4j一些主要的方法有:

我们都爱拖拖拉拉 1189

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java解析XML文件(DOM4J解析xml文件)

实现通过DOM4J技术解析XML配置文件,修改xml配置信息,创建xml文件及信息。通过dom4j技术模拟解析web.xml文件的过程。

雾林小妖的博客 2833

使用DOM4J解析XML文件

DOM4J解析xml 概念:以一切皆对象的原则将xml当成一个对象,在程序中对对象进行进行增删改查的操作即达到了对xml文件进行增删改查的操作。 先讲述在建立好xml文件的基础上,对xml文件进行的操作 创建xml文件,以eclipse为例, 在src下 new>>other>>输入xml>>创建xml文件 xml文件(Student.xml) 代码片. &l...

qq_42207682的博客 560

Dom4j 解析xml文件

下载Dom4j官方地址:https://dom4j.github.io/ jdom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。 dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。 下面介绍使用  ...

weixin_30352191的博客 261

获取properites文件与xml dom4j的解析

获取properites文件与xml dom4j的解析 二,获取properites文件 不同位置对properites文件的调用: 1、若调用的文件就在该类的包中时: public class properitesDemo { public static void main(String[] args) throws IOException { InputStream in = pro...

what_where的博客 251

dom4j解析复杂的xml文件

待解析的xml文件: <?xml version="1.0" encoding="utf-8"?> <ResInfo> <barcode/> <asset> <assetcardno>B</assetcardno> <comments/> <buydate...

weixin_33750452的博客 354

XML,dom4j解析XML文件

简单学习了XML,做好相关记录以便以后回看。 目录 XML介绍: XML作用 XML结构 DTD文件 dom4j解析XML文件: 准备工作 dom4j读取XML文件 dom4j生成XML文件 注意问题: 1.导入的包是org.dom4j。 2.生成XML文件时要指定编码格式并关闭资源,否则会造成乱码,或者生成不了XML文件。 XML介绍: XML作用 用来传输和存储数据。 XML结构 树结构 <?xml version="1.0" encoding ="UT.

Vashon的博客 491

使用dom4j解析XML文件

dom4j是一个简单、灵活的开源库,具有性能优异、功能强大、使用简单的特点。使用dom4j需要下载jar文件。 解析XML文件步骤: (1)创建SAXReader对象,用于读取XML文件。 (2)读取XML文件,获得Document对象。 (3)获取根元素。 (4)根据根元素,使用迭代器,迭代根元素下面的子元素。 package zhao.text; import java.io....

Hot_snail的博客 375

java dom4j解析xml 对象_使用dom4j解析xml文件,并封装为javabean对象

dom4j是一个java的XML api,性能优异、功能强大、易于使用。这里使用dom4j对xml文件进行解析,并完成对文件的封装。在pom文件里面导入dom4jdom4j1.6.1实现对xml文件的解析,主要使用到的是dom4j中的SAXReader类,该类的使用方法如下:SAXReader 类//构造SAXReaderSAXReader sr = new SAXReader();//加载文件D...

weixin_39891438的博客 385
上一篇: xml文件的sax解析
下一篇: xml文件的dom解析
Sweeter
博客等级 码龄14年 81粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值