Java Dom解析xml

XML的DOM解析(Java实现) 目录 一、DOM定义 二、DOM代码实现 1、注意:我们应当认识到,DOM一切皆节点。 2、XML文件代码 3、DOM解析XML的过程 三、通用方法用于把所有的xml文件进行解析 四、实现XML增加、修改和删除操作 1、增加功能代码 ​ 2、修改功能代码 ​3、删除功能代码 一、DOM定义 DOM:Document Object Model,文档对象模型,DOM解析方式把整个文档看成是一个倒挂的树形结构来进行解析。有助于更好的理... 阅读详情
 

Java Dom解析xml

Dom解析是将xml文件全部载入,组装成一颗dom树,然后通过节点以及节点之间的关系来解析xml文件,下面结合这个xml文件来进行dom解析。

Xml代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <books>  
  3.     <book id="12">  
  4.         <name>thinking in java</name>  
  5.         <price>85.5</price>  
  6.     </book>  
  7.     <book id="15">  
  8.         <name>Spring in Action</name>  
  9.         <price>39.0</price>  
  10.     </book>  
  11. </books>  

 然后结合一张图来发现dom解析时需要注意的地方



 

在这里当我们得到节点book时,也就是图中1所画的地方,如果我们调用它的getChildNodes()方法,大家猜猜它的子节点有几个?不包括它的孙子节点,thinking in java这种的除外,因为它是孙子节点。它总共有5个子节点,分别是图中2、3、4、5、6所示的那样。所以在解析时,一定要小心,不要忽略空白的地方。

然后看代码来解析book.xml文件

DomParseService.java

Java代码
  1. import java.io.InputStream;   
  2. import java.util.ArrayList;   
  3. import java.util.List;   
  4.   
  5. import javax.xml.parsers.DocumentBuilder;   
  6. import javax.xml.parsers.DocumentBuilderFactory;   
  7.   
  8. import org.w3c.dom.Document;   
  9. import org.w3c.dom.Element;   
  10. import org.w3c.dom.NodeList;   
  11. import org.w3c.dom.Node;   
  12.   
  13. import com.xtlh.cn.entity.Book;   
  14.   
  15. public class DomParseService {   
  16.     public List<Book> getBooks(InputStream inputStream) throws Exception{   
  17.         List<Book> list = new ArrayList<Book>();   
  18.         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();   
  19.         DocumentBuilder builder = factory.newDocumentBuilder();   
  20.         Document document = builder.parse(inputStream);   
  21.         Element element = document.getDocumentElement();   
  22.            
  23.         NodeList bookNodes = element.getElementsByTagName("book");   
  24.         for(int i=0;i<bookNodes.getLength();i++){   
  25.             Element bookElement = (Element) bookNodes.item(i);   
  26.             Book book = new Book();   
  27.             book.setId(Integer.parseInt(bookElement.getAttribute("id")));   
  28.             NodeList childNodes = bookElement.getChildNodes();   
  29. //          System.out.println("*****"+childNodes.getLength());   
  30.             for(int j=0;j<childNodes.getLength();j++){   
  31.                 if(childNodes.item(j).getNodeType()==Node.ELEMENT_NODE){   
  32.                     if("name".equals(childNodes.item(j).getNodeName())){   
  33.                         book.setName(childNodes.item(j).getFirstChild().getNodeValue());   
  34.                     }else if("price".equals(childNodes.item(j).getNodeName())){   
  35.                         book.setPrice(Float.parseFloat(childNodes.item(j).getFirstChild().getNodeValue()));   
  36.                     }   
  37.                 }   
  38.             }//end for j   
  39.             list.add(book);   
  40.         }//end for i   
  41.         return list;   
  42.     }   
  43. }  
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;

import com.xtlh.cn.entity.Book;

public class DomParseService {
	public List<Book> getBooks(InputStream inputStream) throws Exception{
		List<Book> list = new ArrayList<Book>();
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();
		Document document = builder.parse(inputStream);
		Element element = document.getDocumentElement();
		
		NodeList bookNodes = element.getElementsByTagName("book");
		for(int i=0;i<bookNodes.getLength();i++){
			Element bookElement = (Element) bookNodes.item(i);
			Book book = new Book();
			book.setId(Integer.parseInt(bookElement.getAttribute("id")));
			NodeList childNodes = bookElement.getChildNodes();
//			System.out.println("*****"+childNodes.getLength());
			for(int j=0;j<childNodes.getLength();j++){
				if(childNodes.item(j).getNodeType()==Node.ELEMENT_NODE){
					if("name".equals(childNodes.item(j).getNodeName())){
						book.setName(childNodes.item(j).getFirstChild().getNodeValue());
					}else if("price".equals(childNodes.item(j).getNodeName())){
						book.setPrice(Float.parseFloat(childNodes.item(j).getFirstChild().getNodeValue()));
					}
				}
			}//end for j
			list.add(book);
		}//end for i
		return list;
	}
}

 Book.java用来组装数据和盛放数据

Java代码
  1. public class Book {   
  2.     private int id;   
  3.     private String name;   
  4.     private float price;   
  5.     public int getId() {   
  6.         return id;   
  7.     }   
  8.     public void setId(int id) {   
  9.         this.id = id;   
  10.     }   
  11.     public String getName() {   
  12.         return name;   
  13.     }   
  14.     public void setName(String name) {   
  15.         this.name = name;   
  16.     }   
  17.     public float getPrice() {   
  18.         return price;   
  19.     }   
  20.     public void setPrice(float price) {   
  21.         this.price = price;   
  22.     }   
  23.     @Override  
  24.     public String toString(){   
  25.         return this.id+":"+this.name+":"+this.price;   
  26.     }   
  27. }  
public class Book {
	private int id;
	private String name;
	private float price;
	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 float getPrice() {
		return price;
	}
	public void setPrice(float price) {
		this.price = price;
	}
	@Override
	public String toString(){
		return this.id+":"+this.name+":"+this.price;
	}
}

 

测试使用单元测试如下ParseTest.java

Java代码
  1. public class ParseTest extends TestCase{   
  2.   
  3.     public void testDom() throws Exception{   
  4.         InputStream input = this.getClass().getClassLoader().getResourceAsStream("book.xml");   
  5.         DomParseService dom = new DomParseService();   
  6.         List<Book> books = dom.getBooks(input);   
  7.         for(Book book : books){   
  8.             System.out.println(book.toString());   
  9.         }   
  10.     }   
  11. }  
xml解析 dom方式 例子和讲解 xml解析 dom方式 例子和讲解 java代码 内涵jar 自己引用配置 立即下载

相关推荐

Java解析XML文档(DOM与DOM4j两种方式)

采用DOM与DOM4j两种方式针对XML文档进行增、删、改查的操作,转换方式在Test测试类中实现另一个管理类就可以了!

用java dom解析并生成一个新的xml

[code="java"]package com.lenovomobile.wap; import com.lenovomobile.wap.domain.logic.WapFacade; import com.lenovomobile.wap.help.Helper; import org.springframework.web.servlet.ModelAndView; impor...

wangqiaowqo的专栏 156

Dom解析xml源代码

import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException;

前往JAVA架构的路上 676

Xilinx FPGA 100G RDMA开发实战:基于AXI Lite配置的ROCE V2高速通信系统搭建

本文详细介绍了在Xilinx FPGA上搭建100G ROCE V2高速通信系统的实战过程。通过分析RDMA技术优势与FPGA实现的必要性,重点阐述了基于AXI Lite接口配置ERNIC IP核的关键步骤,包括硬件系统构建、驱动开发及与商用网卡的互通测试,旨在实现兼具高性能与灵活性的网络加速方案。

js777的博客 580

RoboMaster新手必看:用STM32 HAL库搞定大疆M3508电机正反转(附完整代码)

本文详细介绍了如何使用STM32 HAL库驱动大疆M3508电机实现正反转控制,包括硬件准备、PWM配置、电机校准及完整代码实现。特别针对RoboMaster新手常见问题提供了解决方案,如电机抖动、不转等故障排查,并分享了缓启动、DMA更新等进阶技巧,帮助开发者快速掌握电机控制核心技术。

weixin_42519985的博客 228

DOM解析XML文档

<br />DOM为XML 文档的解析定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。<br /> 优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;<br /> 缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;<br /> 使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。<br />public void parserXml(String file

JavaTiger 786

Ubuntu24安装MongoDB(解压版)

依据前面 Linux 发行版本的信息,选择你需要的版本,文件格式选择 tgz 格式,最后点击 Download(下载到你的电脑)或 点击 Copy link 左侧图标(复制下载链接在使用服务器下载)依据前面 Linux 发行版本的信息,选择你需要的版本,文件格式选择 tgz 格式,最后点击 Download(下载到你的电脑)或 点击 Copy link 左侧图标(复制下载链接在使用服务器下载)默认情况下,只能在本机访问 MongoDB,要想远程访问 MongoDB,需要修改配置文件。

rao991207823的博客 2023

JAVA使用DOM解析XML

JAVA使用DOM解析XML: 首先来了解点Java DOM 的 API: 1.解析器工厂类:DocumentBuilderFactory 创建的方法:DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 2.解析器:DocumentBuilder 创建方法:通过解析器工厂类来获得 DocumentBui

續寫經典 3269

别再手动画柜子了!用EPLAN导入STEP模型,5分钟搞定一个标准机柜

本文详细介绍了如何利用EPLAN Pro Panel的3D布局功能,快速将STEP模型转化为智能机柜宏,大幅提升电气工程设计效率。通过实战步骤解析,包括模型导入、智能解析、安装面定义及拼柜技巧,帮助工程师5分钟内完成标准机柜设计,避免传统手动建模的尺寸偏差问题。

weixin_26875109的博客 436

C#海康威视摄像头控制,将IntPtr转换成Bitmap图片

C#通过skd控制海康威视摄像头,获取bitmap格式图片

ReflexMechanism的博客 6588

Java解析XML文档——dom解析xml

好久都没来写东西了。今天突然发现csdn的后台管理改版了,感觉样式还不错,本以为各方面都应该好了,那知道还是老样子。哎不说了,写东西。这段时间开始学j2ee的基础了。感觉很多东西都是模模糊糊能听懂,但下来没怎么看书,做起来还是很困难。今天晚上就整理了一下下面这些东西。一、前言    用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XM

java学习心得 2889

借助AI高效写出结构严谨、内容专业的课题申报书:10大核心模块拆解(附实用提示词)

在很多老师和科研人员眼中,写一份高质量的课题申报,确实是一件非常困难的事。难就难在不只是要说清楚写了什么研究内容,还要体现申报书的可行性和创新性。七哥除了自己写课题,也经常指导会员同仁使用高级学术版搞定课题的申报工作,摸索出了一套行之有效的借助AI申报课题的技巧,在这篇文章中,我将给大家点明课题申报书的10大核心模块的写作技巧,还会给大家一些提示词模板供大家参考,如果你也正准备申报课题,那么这篇文章一定不要错过!特别说明的是,提示词的使用并不是一蹴而就的,是专业思考的延伸和AI化专业表达,过程中需要多次的调

智能AI让学术科研更容易 451

Java——DOM解析XML文件

Java中解析XML文件的方式有四种,分别是: DOM解析 SAX解析 DOM4J解析 JDOM解析 其中,DOM和SAX是Java内置提供的解析方式,无需引用JAR包;而DOM4J和JDOM则是第三方提供的,需要引入相应JAR包才可使用。本篇文章介绍DOM解析。DOM解析的基本步骤如下: 创建DocumentBuilderFactory的对象(通过newInstance()方法) 创建Docume

菜鸟的成长之路... 852

Python实现多元线性回归(Multiple Linear Regression)

多元线性回归是一种用于建立多个自变量与因变量之间关系的统计学方法。在多元线性回归中,我们可以通过多个自变量来预测一个因变量的值。每个自变量对因变量的影响可以用回归系数来表示。

优快云 精品推荐 4333

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

dom java解析xml_Java如何基于DOM解析xml文件

Java如何基于DOM解析xml文件,方法,文件,实例,内存,数据Java如何基于DOM解析xml文件易采站长站,站长之家为您整理了Java如何基于DOM解析xml文件的相关内容。一、Java解析xml、解析xml四种方法、DOM、SAX、JDOM、DOM4j、XPath此文针对其中的DOM方法具体展开介绍及代码分析sax、dom是两种对xml文档进行解析的方法(没有具体实现,只是接口),所以只有...

weixin_33643798的博客 309

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java dom 解析xml 例子,Java DOM解析XML的幾個例子

Sample1:1:新建XML文檔 books.xml,放到項目的根目錄下。xmlns="http://test.org/books">Thinking in JAVACore JAVA2C++ primer2:java解析代碼如下:package com.dom.test;import java.io.File;import java.io.IOException;import javax...

weixin_35781147的博客 184

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java DOM解析XML

XML在项目开发中经常使用。   XML中的常用术语:   元素(Element):指的是从(且包括)开始标签直到(且包括)结束标签的部分。元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。【Element是Node,但Node不一定是Element】   节点(Node):根据 DOM,XML 文档中的每个成分都是一个节点。其中整个文档是一个文档节点、每个 XML 标签是一个元

Hsing Hsu's Blog 1174

java dom解析xml路径_Java如何基于DOM解析xml文件

一、Java解析xml、解析xml四种方法、DOM、SAX、JDOM、DOM4j、XPath此文针对其中的DOM方法具体展开介绍及代码分析sax、dom是两种对xml文档进行解析的方法(没有具体实现,只是接口),所以只有它们是无法解析xml文档的;jaxp只是api,它进一步封装了sax、dom两种接口,并且提供了DomcumentBuilderFactory/DomcumentBuilder和S...

weixin_39912250的博客 117

JAVA解析XML DOM

一、前言用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object Module)称为DOM。Sun公司提供了Java API for XML Parsing(JAXP)接口来使用SAX和DOM,通过JAXP,我们可以使用任何与JAXP兼容的XML解析器。JAXP接口包含

边城刀声 2557

java dom解析xml路径_JAVA使用DOM解析XML

JAVA使用DOM解析XML:首先來了解點Java DOM 的 API:1.解析器工廠類:DocumentBuilderFactory創建的方法:DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();2.解析器:DocumentBuilder創建方法:通過解析器工廠類來獲得 DocumentBuilder db = db...

weixin_39869043的博客 244

JAVA解析XML DOM

一、前言用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object Module)称为DOM。Sun公司提供了Java API for XML Parsing(JAXP)接口来使用SAX和DOM,通过JAXP,我们可以使用任何与JAXP兼容的XML解析器。JAXP接口包含

hbrqlpf的专栏 3140

java使用DOM解析XML文件

JAVA解析XML通常有两种方式:DOM和SAX DOM: Document Object Model (文档对象模型) DOM的特性: 定义一组Java接口,基于对象,与语言和平台无关将XML文档表示为树,在内存中解析和存储XML文档,允许随机访问文档的不同部分。 DOM解析XMLDOM的优点,由于树在内存中是持久的,因此可以修改后更新。它还可以在任何时候在树中上下导航,API使用起来也较简单。 解析步骤: 1、创建解析器工厂对象 DocumentBuilderFactory builder = Docu

java编程学习_java基础教程_booyzhang的博客 359

【Java编程】DOM XML Parser解析、遍历、创建XML

1、前言 DOM XML Parser介绍 DOM 是 W3C 处理 XML 的标准 API,它是许多其它与 XML 处理相关的标准的基础,不仅是 Java,其它诸如 Javascript,PHP,MS .NET 等等语言都实现了该标准,成为了应用最为广泛的 XML 处理方式。当然,为了能提供更多更加强大的功能,Java 对于 DOM 直接扩展工具类有很多,比如很多 Java 程序员耳熟能详的

andieguo的专栏 1万+

Java 应用DOM方式解析XML文件

引入java为啥需要解析XML的方法?xml的优势:它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。

王者之峰 5655
上一篇: 在MyEclipse中使用debug模式
下一篇: 火速围观——谁为蛋疼的实习买单?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值