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,具有性能优异.功能强大和极端易用使用的特点, ...
随机推荐
- java -io字符流FileWrite操作演示
FileWriter字符输出流演示: /* * FiileWriter 字符流的操作 * FileWriter 的构造方法 可传递 File类型 还可以传递String类型 * * 方法 : * wr ...
- 【微信小程序】——rpx、px、rem等尺寸间关系浅析
最近开发微信小程序,在写样式表的时候发现用PX的效果不太理想,而官方文档用rpx来做响应式布局单位,就仔细研究了下,在此做个小总结: 这里先引用官方定义的尺寸单位‘rpx’:可以根据屏幕宽度进行自适应 ...
- [Objective-C语言教程]基础框架(34)
如果您参考Apple文档,应该会看到Foundation框架的详细信息,如下所示. Foundation框架定义了Objective-C类的基础层. 除了提供一组有用的原始对象类之外,它还引入了几个定 ...
- [Objective-C语言教程]错误处理(22)
在Objective-C编程中,错误处理由Foundation框架中提供的NSError类提供处理. 与仅使用错误代码或错误字符串相比,NSError对象封装了更丰富且更具可扩展性的错误信息. NSE ...
- C语言多线程编程一
1. Windows下同时打开多个对话框: #include <Windows.h> #include <process.h> //创建线程 void runmsg(void ...
- window.open完美替代window.showModalDialog
var url = "http//:www.baidu.com/" var name = "百度"; var iWidth = 1100;//弹窗宽度 var ...
- Focal Loss 的前向与后向公式推导
把Focal Loss的前向和后向进行数学化描述.本文的公式可能数学公式比较多.本文尽量采用分解的方式一步一步的推倒.达到能易懂的目的. Focal Loss 前向计算 其中 是输入的数据 是输入的标 ...
- python3.6.4没有raw_input
之前是一直在用Python2.7版本,2.7里面raw_input()和input个人认为区别在于raw_input()可以输入字符串和中文,而input()只接受数字,输入字符串就会报错. 现在用的 ...
- 实现基于NTP协议的网络校时功能
无论PC端还是移动端系统都自带时间同步功能,基于的都是NTP协议,这里使用C#来实现基于NTP协议的网络校时功能(也就是实现时间同步). 1.NTP原理 NTP[Network Time Protoc ...
- Disable Nvidia in Lenovo Y470 Debian wheezy
1.add the apt-key as 'root' (! don't do this as 'sudo' ) $ su root $ wget -O - http://suwako.nomanga ...