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面试题(全)--视频系列
此系列为面试笔试题的视频讲解,以下均为超链接,点击即可进入每个知识点的讲解. Java面试题01.面试的整体流程 Java面试题02.java的垮平台原理 Java面试题03.搭建一个java的开发环 ...
- nginx的几种负载均衡策略
转自https://www.cnblogs.com/1214804270hacker/p/9325150.html 一.关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即 ...
- CentOS7系统安装 Maria Db(MYSQL)教程
一.背景Maria Db是流行的跨平台MySQL数据库管理系统的分支,被认为是MySQL 的完全替代品.Maria Db是由Sun在Sun Micro systems合并期间被Oracle收购后,于2 ...
- Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.******.seashell.bpc.query.query.service.FscBankPayCodeQueryService
2019-03-19 16:22:14,945 WARN [main] (org.springframework.context.support.AbstractApplicationContext. ...
- java简单工厂设计模式
一.基本定义 /* *简单工厂设计模式: *文字描述理解: * 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式. * 通过专门定义一个类来负责创建其它类的实例,被创建的实例通常 * 都具有共同 ...
- redhat基本操作
实验:安装redhat 需求:使用DVD镜像文件rhel-server-6.5-x86_64-dvd.iso,在虚拟机中安装RHEL 6系统 分区方案选择“使用所有空间”. 软件组选择“基本服务 ...
- Vue-cli 2.9 多页配置及多页面之间的跳转问题
vue开发,现在大部分做的都是(SPA)应用,但是,由于,需求不同,我们针对的用户需求变更较为,频繁,如果每次都全量打包更新,给开发的自测,及测试妹子的任务就会多,每次都要重新验证一下才放心.所以,想 ...
- SCOI2019 游记
写在前面 其实冬令营之后就有一些想说的内容,由于心情原因没有写出来.PKUWC 失误频频,唯一可能还有点价值的就是 Day2T3 计算几何推了 76 分出来.NOIWC 更是无心再谈,感觉是被提答送走 ...
- WebFrom局部刷新
因为页面用的是服务器的控件 结果每次触发后导致页面刷新 把刚填完的数据给整没了 很烦 在网上找了蛮久才找到的一个方法 战略插眼 以后还有用到的时候 <asp:ScriptManager runa ...
- [转] Java中Comparator进行对象排序
[From] https://blog.51cto.com/thinklili/2063244 Java在8后引入了lambda表达式和流,使得排序方法有了变化 class User { int id ...