XML文档的解析—dom4j
XML为可扩展标记语言,它主要是用来保存数据,做配置文件,数据传输载体等。其实就是一个后缀名为.xml的文件。
XML命名规则
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能以字符 “xml”(或者 XML、Xml)开始
- 名称不能包含空格
文档声明
例如此声明:<?xml version="1.0" encoding="gbk" standalone="no" ?>
(1)version : 解析这个xml的时候,使用什么版本的解析器解析
(2)encoding : 解析xml中的文字的时候,使用什么编码来翻译
(3)standalone:no - 该文档会依赖关联其他文档 , yes-- 这是一个独立的文档
注意:保存XML文件使用的编码格式与encoding定义的编码格式需一致,否则显示中文时会发生乱码,推荐使用UTF-8编码格式保存文档。
文档结构说明
根元素(rootElement):文档声明下来的第一个元素;
子元素(Element):除根元素的其他元素;
属性(Attribute)的定义:定义在元素里面, <元素名称 属性名称="属性的值"></元素名称>。
<?xml version="1.0" encoding="UTF-8"?>
<students>
<fristStu id="firstName">
<name>张三</name>
<age>20</age>
<address>北京海淀</address>
</fristStu>
<secondStu id="secondName">
<name>Toma</name>
<age>20</age>
<address>湖北武汉</address>
</secondStu>
</students>
XML解析
获取元素里面的字符数据或者属性数据。XML解析方式有多种,常用的有两种:
- DOM:可对文档进行增删操作,读取整个文档至内存中,XML过大,内存溢出;
- SAX:读取一行,解析一行,不会造成内存溢出,但不可以增删操作,只能查询;
- 最常用的解析方案为dom4j。
使用dom4j解析XML
创建SAXReader对象;
指定解析的XML;
获取根元素;
根据根元素获取子元素或者下面的子孙元素。
注意:在进行解析之前,需要导入dom4j的jar包,以eclipse为例:右击项目名称—>Build Path—>Configure Build Path....—>点击右侧的Add External JARs...—>选择下载好的dom4j的jar包—>Apply and Close。
java代码如下:
package com.reedeek.dom4j; 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; public class dom4j_XML { public static void main(String[] args) {
/**
* XML解析方式有多种,常用的有两种:
* 1、DOM:可对文档进行增删操作,读取整个文档至内存中,XML过大,内存溢出;
* 2、SAX:读取一行,解析一行,不会造成内存溢出,但不可以增删操作,只能查询。
* 3、最常用的解析方案为dom4j;
*
*/
try {
// 创建SAXReader对象
SAXReader sax = new SAXReader();
// 指定解析的xml文件地址
Document document = sax.read(new File("src/xml/students.xml"));
// 获取根元素
Element rootElement=document.getRootElement();
// 获取子元素集
List<Element> elements=rootElement.elements();
for(Element element:elements) {
System.out.print(element.getName()+": ");
String name=element.element("name").getText();
String age=element.element("age").getText();
String address=element.element("address").getText();
System.out.println(name+" "+age+" "+address);
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
运行测试结果:

XML文档的解析—dom4j的更多相关文章
- javaweb学习总结十三(dom4j方式对XML文档进行解析以及Xpath的使用)
一:dom4j方式介绍 对于xml的解析总共有三种 1:jaxp方式,是sun公司开发的,分为sax方式和dom方式 2:jdom方式,后来其中部分人员参与开发dom4j 3:dom4j方式,是现在企 ...
- DOM生成XML文档与解析XML文档(JUNIT测试)
package cn.liuning.test; import java.io.File; import java.io.IOException; import javax.xml.parsers.D ...
- Java开发知识之XML文档使用,解析
目录 XML文件详解 一丶XML简介 1.文档结构 2.XML中的元素(Element)或者叫做标签(Tab).属性 文本内容. 节点(Node) 3.XML语法规则 二丶XML文档解析 三丶使用XP ...
- Java解析XML文档——dom解析xml
一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object M ...
- QT XML文档的解析 QXmlStreamReader, DOM,SAX 三种解析方法 简单示例
0. xml文档如下 <?xml version="1.0"?> <bookindex> <entry term="sidebearings ...
- xml文档的解析并通过工具类实现java实体类的映射:XML工具-XmlUtil
若有疑问,可以联系我本人微信:Y1141100952 声明:本文章为原稿,转载必须说明 本文章地址,否则一旦发现,必追究法律责任 1:本文章显示通过 XML工具-XmlUtil工具实现解析soap报文 ...
- c# 创建XML文档,解析XML文档
1.静态函数 using System; using System.Collections.Generic; using System.Linq; using System.Text; using S ...
- web api .net C# mvc API返回XML文档的解析并取值
[HttpGet] public System.Net.Http.HttpResponseMessage GetNotify() { var xmlstring = @" <xml&g ...
- dom4j解析xml文档全面介绍
一.dom4j介绍 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点, ...
随机推荐
- 操作mysql的指令
1,通过ip,端口,用户名,密码登陆数据 命令格式为:mysql -h ip -u root -p -P 3306例如:mysql -h 127.0.0.1 -u root -p -P 3306 2, ...
- Using RDP to connect Windows remote desktop with Linux
安装rdesktop(一般情况下不需要这么做): sudo apt-get install rdesktop 执行连接: rdesktop xxx.xxx.xxx.xxx:3389 -u admini ...
- canvas绘制简单的霓虹灯效果
canvas简单动画分为三个步骤: 1.清除画布区域的内容: 2.重绘: 3.执行requestAnimationFrame(); 这个霓虹灯效果的demo,我没有用requestAnimationF ...
- 为什么说 Gumroad 是一家 “失败” 的创业公司?
Gumroad 是一家 "失败" 的创业公司. 创立于 2012 年,Gumroad 是一个面向创造者的电商平台.创始人 Sahil Lavingia,一名 19 岁的少年,Pin ...
- docker 实例设置自动重启
yaml格式太严格了,每个冒号后面都必须带有空格在linux中./代表当前目录,属于相对路径../代表上一级目录,属于相对路径/代表根目录,/开头的文件都是绝对路径./configure的意思是执行当 ...
- Azure CLI2.0 捕获Linux ARM非托管磁盘虚拟机并创建ARM托管磁盘虚拟机
1.系统内部取消预配VM,创建了测试文件目录及文件:hlm20180904/ hlm20180904.txt 2.使用CLI2.0创建VM映像 a.登陆CLI2.0 备注:在 Azure 中国区使用 ...
- psp0级报告
计划 1.1需求描述: 现在市场上有很多的面向小学生的题卡,但是这习题卡不但价格昂贵,而且每次做题的内容基本都是固定.针对这些问题,开发出了这款网页在线答题系统,每次的题目都有所不同,可以跟快更好提高 ...
- Vue 不睡觉教程3 - 来点实在的:自动计算剩余时间的任务列表
目标前两课教的是入门和文件结构.都没有什么实在的东西.这次我们要来点实在的.我们要做出一个待办列表.这个待办列表有以下特点: 可以自动从文本中抽取出这件事情的开始时间可以显示当前距离这件事情的开始时间 ...
- 题解 [ZJOI2010]数字计数
传送门<-洛谷版 电梯<-bzoj版 这份代码是新手友好版,也算是自用版,注释自认为写的很详细. 希望对要学数位dp的人有所帮助 这份题解是记忆化搜索版的数位DP,个人还是比较建议用这种方 ...
- win10 下springcloud打包docker镜像部署。
1:建一个最简单的springcloud应用. 2:在根目录下新建dockerfile,文件如下: FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE ...