前言
XML是eXtensible Markup Language(可扩展标记语言)的缩写,是SGML(标准通用化标记语言)的一个子集 用于提供数据描述格式 适用于不同应用程序间的数据交换,而且这种交换不以预先定义的一组数据结构作为前提,增强了可扩展性。
一、XML文档结构
一个基本的XML文档通常由序言和文档元素两部分组成
1:序言
可以包括XML声明 处理指令和注释 XML文档的第一行通常是XML声明 语法如下
<? xml version="version" encoding="value" standalone="value"?>
standalone 用于指定XML文档是否和另一个外部文档嵌套使用 yes则为一个独立的文档
2:文档元素
XML文档中的元素是以树形分层结构排列的 一个元素可以嵌套在另一个元素中,XML文档中有且只有一个顶层元素 称为文档元素或根元素
<tagname>content</tagname>
XML语法要求
1:XML文档必须有一个顶层元素 其他元素必须嵌入在顶层元素中
2:元素嵌套要正确 不能重叠或者跨越
3:每一个元素必须同时拥有起始标记和结束标记
4:元素类型名要完全匹配
5:XML元素类型名区分大小写
6:元素类型名称不可以以 -开头 也不可以包含空格和:
7:元素可以包含属性 但属性值必须用单引号或者双引号括起来
为XML文档中 的元素定义属性
<info id="1">
XML的注释
注释以<!--开始 以字符串-->
结束
处理字符数据
在XML文档中 有些字符会被XML解析器当作标记进行处理 如果希望把这些字符作为普通字符处理,就需要使用实体引用或CDATA段
< 实体引用为&1t >实体引用为> &实体引用为& '实体引用为&apos "实体引用为"
<?xml version="1.0" encoding="GBK"?> <placard version="2.0"> <info id="1"> <title>重要通知</title> <content>&nbsp;&nbsp;明天下午三点</content> <pubDate>2022-10-17</pubDate> </info> </placard>
使用CDATA段
CDATA段是一种用来包含文本的方法 其内部的所有内容都会被XML解析器当作普通文本 所以任何符号都不会被认为是标识符 语法如下
<![CDATA[文本内容]]>
二、dom4j简介
dom4j是sourceforge.net上的一个Java开源项目 主要用于操作XML文档 如 创建XML文档和解析XML文档 dom4j应用于Java平台 采用了Java集合框架并完全支持DOM SAX JAXP是一种适合Java程序员使用的Java XML解析器
dom4j的下载与配置
1:进入网址dom4j
2:点击Download下载最新版本的dom4j
3:将文件解压后 将dom4j.1.6.1.jar文件和lib文件夹下的jaxen-1.1-beta-6.jar文件配置到构建路径下中 或者将这两个文件直接复制到项目的lib文件夹中
三、创建XML文档
dom4j组件的一个最重要的功能就是创建XML文档 通过该组件可以很方便的创建XML文档
1:创建XML文档对象
代码如下
Document document=DocumentHelper.createDocument();
2:创建根节点
为XML文档创建根节点 首先需要创建一个普通节点 然后调用方法将该节点设置为根节点
创建一个普通节点语法如下
public static Element createElement(String name)
设置为根节点
public void setRootElement(Element rootElement)
3:添加注释
public Element addComment(String comment) placard.addComment("芝士根节点");
4:添加属性
public Element addAttribute(String name,String value)
5:设置节点的内容
public void setText(String text)
6:设置编码
public void setEncoding(String encoding)
7:设置输出格式
public static OutputFormat createPrettyPrint()
输出XML文档
1:未设置输出格式
XMLWriter writer=new XMLWriter(new FileWriter(fileURL)); writer.write(document); writer.close();
2:已经设置了输出格式或编码集
XMLWriter writer=new XMLWriter(new FileWriter(fileURL),format); writer.write(document); writer.close();
四、解析XML文档
构建XML文档对象
SAXReader reader=new SAXReader(); Document document=reader.read(new File(fileURL));
获取根节点
Element placard=document.getRootElement();
获取子节点
1:element方法
用于获取指定名称的第一个节点
public Element element(String name)
2:elements方法
用于获取指定名称的全部节点
public List elements(String name)
五、修改XML文档
1:修改节点
在修改XML文档的节点前 首先需要查询到该节点
查询符合条件的唯一节点
public Node selectSingleNode(String xpathExpression)
查询符合指定条件的节点列表
public List selectNodes(String xpathExpression)
获取到要修改的节点后 就可以应用前面的方法对该节点进行修改操作
2:删除节点
同理首先查询你要删除的节点 方法同上
然后用remove方法删除该节点
public boolean remove(Element element)