使用Java解析XML
一.解析的对象
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="1">
<username>小丁</username>
<password>123</password>
</user>
<user id="2">
<username>小彭</username>
<password>123</password>
</user>
</users>
二.解析的方法介绍
1.DOM(docuement object model)解析

把所有的XML内容读到内存中,形成树状结构。这个树状结构是一个对象,名字叫docuement
DOM解析中的一些术语
Doucment:整个对象(整颗数)
Element:元素,就是标签,上面的users,user,username,password四个标签
Attribute:属性,user标签中的id属性
Text:文本,标签中的内容,上图最下面的叶子节点。
Node:上面四个都可以叫Node
2.SAX(simple API for XML)
SAX一条条读到内存并解析
三.代码实现
使用dom4j(一个API,封装了我们需要的方法)
第一种实现 导入dom4j的jar:
package xmlDemo; import java.io.File;
import java.util.List; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test; public class UserTest {
@Test
public void DOMTest() {
try {
SAXReader reader = new SAXReader();
// 读取要解析的xml文件
Document document = reader.read(new File("src/User.xml"));
// 获得根元素
Element rootElement = document.getRootElement();
// 获取根元素下的所有子元素
List<Element> elements = rootElement.elements();
for (Element element : elements) {
String username = element.element("username").getText();
String password = element.element("password").getText();
System.out.println("username=" + username + " password=" + password);
} } catch (DocumentException e) {
e.printStackTrace();
}
}
}
结果:
第二种XPath: 导入dom4j jar 包外还需导入
package xmlDemo; import java.io.File;
import java.util.List; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test; public class UserTest {
@Test
public void XPathTest() {
try {
SAXReader reader = new SAXReader();
// 读取要解析的xml文件
Document document = reader.read(new File("src/User.xml"));
// 获得根元素
Element rootElement = document.getRootElement();
//选择所有的username元素对象
List<Element> nodes = rootElement.selectNodes("//username");
for (Element element : nodes) {
System.out.println("username="+element.getText());
} } catch (DocumentException e) {
e.printStackTrace();
}
}
}
结果:
使用Java解析XML的更多相关文章
- java解析xml的三种方法
java解析XML的三种方法 1.SAX事件解析 package com.wzh.sax; import org.xml.sax.Attributes; import org.xml.sax.SAXE ...
- java 解析XML文档
Java 解析XML文档 一.解析XML文档方式: 1.DOM方式:将整个XML文档读取到内存中,按照XML文件的树状结构图进行解析. 2.SAX方式:基于事件的解析,只需要加载XML中的部分数据,优 ...
- Java 解析 XML
Java 解析 XML 标签: Java基础 XML解析技术有两种 DOM SAX DOM方式 根据XML的层级结构在内存中分配一个树形结构,把XML的标签,属性和文本等元素都封装成树的节点对象 优点 ...
- JAVA解析XML的四种方式
java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这 ...
- Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)
[目录] 一.[基础知识——扫盲] 二.[DOM.SAX.JDOM.DOM4j简单使用介绍] 三.[性能测试] 四.[对比] 五.[小插曲XPath] 六.[补充] 关键字:Java解析xml.解析x ...
- Java解析XML文档(简单实例)——dom解析xml
一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object ...
- 【Java】详解Java解析XML的四种方法
XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML.本文将详细介绍用Java解析XML的四种方法. AD: XML现在已经成为一种通用的数据交换格式,它的平台无关性,语 ...
- java解析xml的几种方式
java解析xml的几种方式 DOM DOM的全称是Document ObjectModel,也即文档对象模型.在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称D ...
- java解析xml文件并输出
使用java解析xml文件,通过dom4j,代码运行前需先导入dom4j架包. ParseXml类代码如下: import java.io.File; import java.util.ArrayLi ...
- 一个java解析xml的简单例子
java解析xml,主要是通过Dom4j实现的,很多场合都会用到此功能,需要解析XML文件. 下面是一个简单的解析XML文件的例子: import java.util.Iterator; import ...
随机推荐
- noip第20课资料
- C# MVC微信扫码支付
项目需求:学校学生网上缴费项目,刚来公司实习网上百度了各种资料,感谢很多大神避免了很多大坑. 本次扫码支付为:电脑生成二维码,手机微信扫码进行付款.建议开发前下载官方demo熟悉及后续有用到里面代码: ...
- Android开发工程师文集-layout_weight讲解
前言 大家好,给大家带来Android开发工程师文集-layout_weight讲解的概述,希望你们喜欢 Layout_weight的相关代码展示 <TextView android:layou ...
- SQL-1--语句分类
- LeetCode:146_LRU cache | LRU缓存设计 | Hard
题目:LRU cache Design and implement a data structure for Least Recently Used (LRU) cache. It should su ...
- Origin的使用问题集锦
在空间上看见同学转的一篇关于学术研究的文章,由于不常常上空间,更别说在上面看一些好的文章,所以特意将那篇文章整理到自己的博客中,方便以后做科研的时候能够用到,原文出处:http://user.qzon ...
- Windows10开发手记-RelativePanel使用详解
Windows 10已于7月29号面向全球发布,同时Universal Windows Platform(UWP) SDK也已正式放出,配合VS 2015我们可以开发出通用的Windows App. ...
- 【xsy1300】 原题的旅行 最短路+倍增
题目大意:有一个$n$个点,$m$条边的无向图,玩家走过第$i$条边,血槽中的血会下降$v_i$点,如果不足$v_i$点,这人会当场去世. 这$n$个点中,有若干个是关键点,在这些关键点可以将血槽补满 ...
- 为什么我们喜欢用 sigmoid 这类 S 型非线性变换?
本文整理自 @老师木 的一条图片新浪微博,从另一个角度给出为何采用 sigmoid 函数作非线性变换的解释. 为什么我们喜欢用 sigmoid 这类 S 型非线性变换?
- Oracle 插入时间时 报错:ORA-01861: 文字与格式字符串不匹配 的解决办法
一.写sql的方式插入到Oracle中 往oracle中插入时间 '2007-12-28 10:07:24'如果直接按照字符串方式,或者,直接使用to_date('2007-12-28 10:07: ...