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,具有性能优异.功能强大和极端易用使用的特点, ...
随机推荐
- Mybatis 动态Sql语句《常用》
MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉 ...
- 动态代理方案性能对比 (CGLIB,ASSIT,JDK)
动态代理工具比较成熟的产品有: JDK自带的,ASM,CGLIB(基于ASM包装),JAVAASSIST, 使用的版本分别为: JDK-1.6.0_18-b07, ASM-3.3, CGLIB-2.2 ...
- 各大浏览器相继发布声明将停止支持 TLS 1.0 和 TLS 1.1 !
简评:TLS 1.0 发布至今已将近 20 周年即将寿终正寝,期间为我们保障了千亿次甚至万亿次的数据请求安全. TLS 工作组几个月前发布声明文件弃用 TLS 1.0 和 TLS 1.1. 昨天,包括 ...
- [转]iOS:批量导入图片和视频到模拟器的相册
IOS开发中我们经常会用到模拟器调试,模拟器有个主要的好处就是程序启动块,最重要的是如果没有证书的话,我们就只能在模拟器上调试了.使用模拟器调试时我们可能碰到需要从系统相册选择图片的情况,特别是做图片 ...
- Spring+SpringMVC+Mybatis整合redis
SSM整合redis redis是一种非关系型数据库,与mongoDB不同的是redis是内存数据库,所以访问速度很快.常用作缓存和发布-订阅式的消息队列. 这里用的是ssm框架+maven构建的项目 ...
- centos6.5安装docker(亲测)
centos6.5下安装docker的过程办法 在看了网上N多复制粘贴的文章,又尝试无效后,我把我最终成功的办法发出来,希望能帮到拼命干环境的你. 操作环境: centos6.5(Final) 内核: ...
- 题解 p2420 让我们异或吧
传送门 #include<iostream> #include<cstdio> #include<cstring> using namespace std; ;in ...
- (转)CentOS 7 下 MySQL 5.7 配置 Percona Xtrabackup
CentOS 7 下 MySQL 5.7 配置 Percona Xtrabackup 原文:http://qizhanming.com/blog/2017/05/10/install-percona- ...
- centos安装图形操作界面
yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
- js判断数组中是否有重复值得三种方法
方法一: var s = ary.join(",")+","; for(var i=0;i<ary.length;i++) { if(s.replace( ...