xml文件的dom解析

DOM解析XML文件:教程与实践 本文还有配套的精品资源,点击获取 简介:DOM解析是一种将XML文档转换为树形结构的方法,便于访问和修改文档元素。本教程详细介绍了如何使用DOM解析器在Java中处理XML文件,包括读取文件、访问元素、获取属性、处理命名空间、修改文档和保存更改。通过实际的Java代码示例,学习者将能够理解DOM解析器如何操作XML结构,以及如何应用DOM技术处理实际的XML文档任务。 ... 阅读详情

dom解析xml,会一次性读入xml文件,会把文件中的所有元素,解析成一个个Node对象节点。dom解析是基于树和节点的文档,通过操作节点的相关方法,可以获取节点的属性,节点的内容,也可以获节点的子节点,如此便可以对xml文件进行解析。
所以说dom解析便于操作,可以轻松完成增删改查, 不过dom解析的文档不适合过大,由于它是将文档读入内存之中, 过大的文件影响了机器性能,甚至容易导致内存溢出。
Node对象提供了很多常量,表示当前结点的类型,基于Node对象的操作会相对比较复杂,所以我们可以把Node转成其对应子类,子类里提供了很多便捷的方法去获取数据。如把Node类型的对象转成Element对象。
以下是一个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封装类,将读取的数据封装成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();
	}
}


在使用java api对xml文件进么解析的时候,由于解析xml文件的方式相对较多,类名相同的相关类也比较多,所以导包的时候要多注意,以免造成不必要的错误。
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class DomTest {

	public static void main(String[] args) {
		List<Person> list = new DomTest().parsePersons();
		//打印读取的结果。
		for (Person p : list) {
			System.out.println(p);
		}

	}
	
	//解析xml文件,并把结果封装至Person的集合中返回
	private List<Person> parsePersons() {
		List<Person> persons = null;
		try {
			//获得dom制造工厂
			DocumentBuilderFactory factory = DocumentBuilderFactory
					.newInstance();
			//获得dom解析器
			DocumentBuilder builder = factory.newDocumentBuilder();
			//获得xml文件的输入流
			InputStream inStream = DomTest.class.getClassLoader()
					.getResourceAsStream("person.xml");
			//通过解析器得到Document对象
			Document document = builder.parse(inStream);
			//得到要获取的所有person结点,通过每个结点,获取每个person的内容数据。
			NodeList list = document.getElementsByTagName("person");
			persons = new ArrayList<Person>();
			Person person = null;
			//遍历person集合,将数据封装于person对象中
			for (int i = 0, size = list.getLength(); i < size; i++) {
				person = new Person();
				//得到<person>结点
				Element e = (Element) list.item(i);
				//获取其id属性
				String id = e.getAttribute("id");
				person.setId(Integer.valueOf(id));
				//得到当前<person>结点的所有孩子结点。
				NodeList chileList = e.getChildNodes();
				//遍历所有孩子结点,以便获得其余数据。
				for (int j = 0, csize = chileList.getLength(); j < csize; j++) {
					Node node = chileList.item(j);
					switch (node.getNodeName()) {
					case "name":
						//当结点为<name>时,获取内容,并给person赋值
						String name = node.getTextContent();
						person.setName(name);
						break;
					case "age":
						//当结点为<age>时,获取内容,并给person赋值
						String age = node.getTextContent();
						person.setAge(Integer.valueOf(age));
						break;
					}
				}
				//完成一个<person>结点的遍历,将person对象加入集合中。
				persons.add(person);
				//清空person对象的数据。
				person = null;
			}

		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		//返回最终得到的数据。
		return persons;
	}
}


Mid-360与FAST-LIO2实战:从点云采集到高精度建图全流程解析 本文详细解析了使用Livox Mid-360激光雷达与FAST-LIO2算法实现高精度实时建图的全流程。内容涵盖硬件准备、软件环境搭建、算法部署配置、数据采集实战,并重点探讨了多楼层场景下的参数调优与误差抑制策略,为机器人及无人机三维感知应用提供了实用指南。 阅读详情

相关推荐

Palantir解密:说人话,到底什么是“本体”?

笔者2018年在云计算公司开展政企数字化专项时,便意识到全面数字化进程背后存在大量未知领域,尤其是未来数字世界的底层架构如何构建这一关键问题。可惜因为种种原因,连那几个小专项最终都未能落地,也就无从深入了。近期看了很多有关Palantir的材料,倒觉得这像是新硅谷(区别于比尔盖茨、扎克伯格等主导的硅谷时代)交出的一份关于“数字世界底层架构”的答案,至于这个答案是否成立、有没有更优解、我们本土对标的版本是什么,可能都还待看。《Palantir解密》系列尝试通过解析Palantir,来系统回答这一问题。

SZSDQJC的博客 2156

♥️Javascript之DOM♥️

目录 节点 Node类型 属性 方法 Document类型 属性 DOM编程界面 查找元素 添加元素 Element类型 属性 Text类型 属性和方法 文档对象模型(DOM)是网页的编程接口。它给文档(结构树)提供了一个结构化的表述并且定义了一种方式——程序可以对结构树进行访问,以改变文档的结构,样式和内容。 浏览器会根据DOM模型,将结构化文档(比如HTML和XML)解析成一系列的节点,再由这些节点组成一个树状结构(DOM T...

欢迎 2431

【超详细】数据分析笔试题分享,可以收藏后仔细阅读_数据分析岗位笔试题目

这种做法是最精确的做法,保留了所有的信息,也未添加任何额外信息,若预处理时把所有的变量都这样处理,会大大增加数据的维度。15、在某座城市出现了某种流行病,且已知某座城市男女人数相同,男性患该病的概率为5%,女性为0.25%,现已知该城市的小明得了此病,请问小明为男性的概率是() B。D项,使用方差作为特征评分标准,如果某个特征的取值差异不大,通常认为该特征对区分样本的贡献度不大,因此在构造特征过程中去掉方差小于阈值的特征。LTV,用户生命周期价值,是产品从用户获取到流失所得到的全部收益的总和。

2401_89824744的博客 948

Dom详细讲解

文档对象模型,英文全称为Document Object Model,它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容。D:Document,文档,表示的整个Html的网页文档O:Object, 对象,将网页的每一部分(标签)转换为每一个对象M:Model,模型,使用模型来表示对象之间的关系,方便我们获取。DOM 将文档解析为一个由节点和对象(包含属性和方法的对象)组成的结构集合。简言之,它会将web页面和脚本或程序语言连接起来,让脚本来操作页面,使

qq_51986661的博客 7143

保姆级教程:用OSSH免费版+FreeRADIUS+FreeAC NAC,从零搭建一套企业级无线Portal认证系统

本文提供了一套基于OSSH免费版、FreeRADIUS和FreeAC NAC的企业级无线Portal认证系统搭建教程。从环境规划、核心组件安装到认证策略与用户管理,详细介绍了如何利用开源工具构建高效、安全的认证体系,特别适用于预算有限但需求严格的企业场景。

weixin_27032989的博客 392

pix4d安装步骤

pix4d三维模型软件的安装步骤

Little_Bee_27000的博客 1万+

XML( 可扩展编辑语言 ) —— DOM解析

1. 什么是DOM ? 用于 XML 的标准对象模型 用于 XML 的标准编程接口 中立于平台和语言 W3C 标准 XML DOM 定义了所有 XML 元素的对象和属性,以及访问它们的方法(接口)。 换句话来说:XML DOM 是用于获取、更改、添加或删除 XML 元素的标准。 2. 节点 根据 DOM,XML 文档中的每个成分都是一个节点。 整个文档是一个文档节点 每个 XML 元素是一个元素节点 包含在 XML 元素中的文本是文本节点 每一个 XML 属性是一个属性节点

让优秀成为一种习惯! 1173

机器学习算法 —— LightGBM

本次我们选择英雄联盟数据集进行LightGBM的场景体验。英雄联盟是2009年美国拳头游戏开发的MOBA竞技网游,在每局比赛中蓝队与红队在同一个地图进行作战,游戏的目标是破坏敌方队伍的防御塔,进而摧毁敌方的水晶枢纽,拿下比赛的胜利。现在共有9881场英雄联盟韩服钻石段位以上的排位比赛数据,数据提供了在十分钟时的游戏状态,包括击杀数、死亡数、金币数量、经验值、等级……参考项目:机器学习系列入门系列[七]:基于英雄联盟数据集的LightGBM的分类预测。

ZShiJ的博客 708

DOM详解

文章目录一、什么是DOM1. 什么是DOM2. 为什么学习DOM3. 何时会用到DOM4. DOM标准5. DOM能做的5件事二、DOM树1. 什么是DOM树2. 何时会生成DOM树三、查找1. 不需要查找就可直接获得的4种节点对象:2. 按节点间关系查找3. 示例: 输出指定元素,并用节点间关系查找想要的元素4. 按HTML特征查找: 4个函数5.查找指定的元素,并修改元素的样式总结 一、什么是DOM 1. 什么是DOM 一套专门操作网页内容的对象和方法的集合。 2. 为什么学习DOM ECM

m0_48224507的博客 1万+

某AI推荐系统项目管理复盘:架构师总结的6大方法论与调优策略

我是张三,某大厂资深AI架构师,主导过5个千万级用户的推荐系统项目(覆盖电商、内容、视频、音乐、外卖等场景)。我的公众号“AI架构师笔记”会分享更多AI项目管理和技术实战经验,欢迎关注。最后的话:推荐系统不是“一锤子买卖”,而是“持续优化的过程”。希望这篇文章能帮你少踩坑,多做对——毕竟,把复杂的事做成,才是架构师的核心能力。

2501_92132293的博客 362

古风仙侠少女三视图提示词,一键生成角色设定

3D中国写实CG风格,CG渲染质感,精细3D建模,PBR物理材质,细腻服装纹理,电影级灯光,丰富表情,高精度场景,次世代引擎画质。平视正交视角,统一光照,纯白背景,无文字无水印,避免强透视和动态变形。3D中国写实CG风格,CG渲染质感,精细3D建模,PBR物理材质,细腻服装纹理,电影级灯光,丰富表情,高精度场景,次世代引擎画质。3D中国写实CG风格,CG渲染质感,精细3D建模,PBR物理材质,细腻服装纹理,电影级灯光,丰富表情,高精度场景,次世代引擎画质。少女,古风仙侠少女气质,灵动、温婉、仙气。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1046

XML--03--解析 -DOM方式

https://blog.youkuaiyun.com/w_linux/article/details/79382504? https://blog.youkuaiyun.com/xiaozhuangyumaotao/article/details/106009579? https://blog.youkuaiyun.com/m0_37499059/article/details/80505567?

时光里的博客 925

24、手机GPS天线设计与有源GNSS天线性能评估

本文系统介绍了手机GPS天线的代表性设计,包括隔离磁偶极子、共面平衡偶极子和小型陶瓷加载QHA天线,分析了其结构特点、性能参数及适用场景。同时详细阐述了有源GNSS天线的组成结构与G/T比作为关键性能指标的评估方法,并提出了组件选择、噪声控制和增益提升等优化策略。最后展望了未来手机GPS天线在小型化、多频集成和智能适应性方面的发展趋势。

pytorch8learner的博客 720

Android中DOM解析XML文件

一、在assets文件中写xml文件[html] view plaincopyprint?xmlversion="1.0"encoding="UTF-8"?> persons> personid="23"> name>李明name> age>30age> person> personid="20"> name>李向梅name> age>25age> person> persons>

Fine。晨曦~-[清晨] の第一缕阳光 5714

efm32 入门.pdf

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

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

QT之XML文件解析DOM

QT使用DOM方式解析XML文档

qq_39295354的博客 1621

IEM模型,地表粗糙度模拟

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

XML学习之Dom方式解析XML文件

XML学习之Dom方式解析Xml文件 一、java解析XML概述   1.Xml解析方式分为两种:Dom方式和SAX方式。    (1)、DOM方式:Document Object Model,文档对象模型。这种方式是W3C推荐的处理XML的一种方式。    (2)、SAX:Simple API for XML。这种方式不是官方标准,属于开源社区XML-DEV,   但是几乎所有的XML解

yanyu110991的专栏 3505

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

DOM解析XML文件

在JAVA中XML解析可以使用DOM,SAX,JDOM,JAXB四种方式。 DOM是基于树和节点的文档对象模型(Document Object Module)。DOM编程不要其它的依赖包,因为JDK里自带的JDK里含有的解析所需要用到的org.w3c.dom和javax.xml.parsers等包。DOM不适合于解析较大的XML文件,因为它会将XML全部加载到内存,如果XML文件很大,则会很费内

liujizhong的专栏 698

Dom解析XML文件

public List getPersons(InputStream inStream) throws Exception{ List persons = new ArrayList(); //得到DocumentBuilder对象 DocumentBuilderFa

andrew 1535

DOM解析器生成XML文件

DOM解析器生成XML文件 使用DOM解析器生成XML文件 java代码如下 import org.w3c.dom.Document; import org.w3c.dom.Element; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFact...

SpongeBob的博客 1453

如何使用DOM解析XML文件?

DOM模式解析XML,是把整个XML文档当成一个对象来处理,会先把整个文档读入到内存里。是基于树的结构,通常需要加载整文档和构造DOM树,然后才能开始工作。 优点: 允许应用程序对数据和结构做出更改。 访问是双向的,可以在任何时候在树中上下导航,获取和操作任意部分的数据。 整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能 缺点: 因为需要加载整个XML文档来构造层次结构,所以如果xml文件过大会消耗大量资源。 将整个文档调入内存(包括无用的节点),浪费时间和空间;使用场合:一旦解

IABQL的博客 2362

dom解析,解析xml文件

前言 解析xml文件也是一个很重要的知识 接下来就是掩饰解析xml文件喽! 分类 解析xml文件分为两种(人家说):dom解析和sax解析。 两种解析都有各自的优缺点 ,简单概括以下就是,dom解析适合小文件的,数据量不多的xml,而另一个就恰恰相反。 XML的解析方式: 1.DOM(Document Object Model 文档对象模型) 关键字:树(Document) 优点: 把xml文件在内存中构造树形结构,可以遍历和修改节点 缺点: 如果文件比较大,内存有压力,解析的时间会比较长 2. SAX(S

weixin_47809124的博客 736

DOM方式解析XML文件

通过构建DOM解析器解析简单XML文件 import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import javax.xml.parsers.Docum...

SpongeBob的博客 890

使用DOM解析XML文件

XML是一种可扩展的标记语言,首先它是一种标记语言,类似于HTML,有标签,标签有属性,然而与HTML不同的是XML的标签是可以自己定义的,这样就方便我们存储一些有层次结构的内容! 这里要说的是使用DOM去解析XML文件: 首先,DOM是一种文档对象模型(Document Object Model),使用DOM解析时会将XML文档表示为树状,具有层次性。 如下是一个xml文件的例子:

zhuxinquan的博客 2061

java dom 读取xml文件_DOM解析XML文件(读取)

DOM解析XML文件是一次性将目标文件中的所有节点都读入,然后再进行后续操作的方式。一般分为以下几步:1.定义好目标XML文件路径path。2.实例化DOM解析工厂对象,DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(),这种工厂类都不能用new的方式直接产生对象,必须用调用类的newInstance方法来产生...

weixin_35847422的博客 612

java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...

网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件问题importjava.text.SimpleDateFormat;importjava.util.Date;importjavax.xml.parsers.DocumentBuilder;importjavax.xml.parsers.DocumentBuilderFactory;...

weixin_39954698的博客 420

XML的介绍及使用DOM,DOM4J解析xml文件

XML(可扩展标记语言,)是一种用于定义文档结构和数据存储的标记语言。它主要用于在不同的系统之间传输和存储数据。

欢迎来到一个不知名牛马的博客 1276
上一篇: xml文件的dom4j解析
下一篇: xml文件的jdom解析
Sweeter
博客等级 码龄14年 81粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值