10.JAVAXML解析器
一、XML文档概述
XML(EXtensible Markup Language)可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言。由程序设计编写者编写。
很多计算机语言都有支持XML文档解析的功能,XML文档用于跨平台跨计算机进行数据传输的作用
二、XML文档语法规则
XML标题声明
<?xml version="1.0" encoding="UTF-8"?>
一般固定格式,声明XML的版本号以及编码格式
XML文档注释
<!-- 注释内容 -->
注释内容用尖括号包围
定义元素块
元素块中可以包括元素属性,子元素和常量文本
<student code="stu001">
<name>东方不败</name>
<birth>1984-10-22</birth>
<sex>男</sex>
<address>黑木崖</address>
</student>
<student code="stu002">
<name>令狐冲</name>
<birth>1990-10-22</birth>
<sex>男</sex>
<address>华山</address>
</student>
元素的定义规则
-
元素名称可以包含字母,数字以及其他的符号
-
元素开头不能用数字或符号
-
元素不可以包含“XML”,“xml”字符
-
XML语言中所有的元素必须用尖括号包围
-
元素名称不能包含空格
元素属性
元素中的属性用来描述元素特性,由元素名称和属性值组成,中间由“=”进行赋值
code表示属性名称,属性值必须用单引号或着双引号包围
<student name = "John">
<!-- 包含子元素以及文本信息的内容-->
</student>
实体引用
实体引用类似一中转义字符,当某些特殊情况需要在单引号或双引号中表示特殊符号的一种方式,不会与XML语法规则中的符号有冲突
-
<,表示转义小于号<
-
>,表示转义大于号>
-
&,表示&符号
-
&apos,表示‘单引号
-
",表示“双引号
三、Jdom扩展包
Jdom是第三方提供并编写的对XML文件进行解析的功能工具,基于Java语言编写封装成实例,使用Java的语言形式进行XML文档的解析
Jdom提供了基本的XML文档读取和写入的操作,Jdom将XML文档中的根元素称为一个节点,通过XML文档对象获取其节点以及上下级元素的相关常用方法
Jdom类包的工作原理
-
读取目标XML文档路径获取XML文档进行读取,封装成运行时的Java对象
-
将XML文档通过Java输出流写入到本地硬盘
Jdom类的常用方法
获取当前XML文档的类路径
//获取当前类的out包类路径
String path = Tools.class.getClassLoader().getResource("").getPath();
//避免乱码使用UTF-8编码格式进行处理
try {
path = URLDecoder.decode(path, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
调用SAXBuilder类方法创建目标XML文档的类路径
document build(String uri)
获取XML文档的根元素并封装成Element对象
Element getRootElement()
Element类
Java中用来表示XML文档中元素的对象
Element类常用方法
获取根元素包含的所有子元素
List<> getChildren()
获取元素属性的对象
Attribute getAttribute(String name)
获取元素属性的字符串形式
String getValue()
获取子元素的对象
Element getChild(String name)
获取子元素的文本内容
String getText()
设置子元素的文本内容
Element setText()
XMLOutputter类
XMLOutputter用于写入XML文档到目标路径的工具类包
用于修改并写入XML文档的方法
void output(document doc,outputSteam out)
给定目标文档对象以及写入目标文档的输出流
四、Dom4j扩展包
dom4j与jdom同样通过java的对象形式实现对XML文件的读写操作,dom4j是jdom扩展包的升级版
DocumentFactory类
表示一个文档工厂,提供使用dom4j进行写入操作的核心组件
包含Document对象、XML根元素以及子元素相关参数的创建和获取
新建DocumentFactory实例
DocumentFactory documentFac = DocumentFactory.getInstance();
DocumentFactory常用方法
Document createDocument(String encoding)
其中一个重载方法,通过给定的编码格式返回一个Document对象
Element createElement(String name)
在一个文档对象中新建一个元素并赋予名称
Attribute createAttribute(Element owner,String name,String value)
通过给定的相关参数新建元素属性对象
owner 该属性属于哪个元素
name 该属性名称
value 属性值
Document类
在dom4j类中表示一个XML文档的对象,属于一个接口,只能调用静态方法
Document相关方法
void setRootElement(Element element)
设置当前文档对象的根元素
Element getRootElement()
获取根元素对象
void setXMLEncoding(String encoding)
设置当前文档对象的编码格式
String getXMLEncoding()
获取当前文档对象的编码格式字符串形式
Element类
Java中用来表示XML文档中元素的对象
Element相关方法
void add(Element element)
为当前元素添加子元素
void add(Attribute attribute)
为当前元素添加属性
void setText(String name)
为当前元素设置字符串形式名称
String getText()
获取当前元素文本内容
SAXWriter类
//基于文本输出流创建XMLWriter实例,使用XML文档的默认格式输出
XMLWriter xmlWri = new XMLWriter(Writer writer, OutputFormat.createPrettyPrint());
//XMLWriter的保存文件方法
xmlWri.write(Document documentType);//基于XML类型保存文件
SAXReader类
//创建dom4j读取XML文件核心实例的创建
SAXReader saxReader = new SAXReader();
/*
通过SAXReader读取目标XML文档的方法
返回Document对象
*/
Document doc = saxReader.read(Reader reader);