Java 持久化操作之 --XML
时间:2022-05-07
本文章向大家介绍Java 持久化操作之 --XML,主要内容包括1)有关XML简介、2)解析XML技术:、2-2)使用SAX与DOM4J解析XML:增删改查读、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
1)有关XML简介
XML(EXtensible Markup Language)可扩展标记语言
特点:XML与操作系统、编程语言的开发平台无关
实现不同系统之间的数据交换
作用:数据交换、配置应用程序和网站
大致文档结构:
XML文档内容由一系列标签元素组成:
XML编写注意事项:
所有XML元素都必须有结束标签
XML标签对大小写敏感
XML必须正确的嵌套
同级标签以缩进对齐
元素名称可以包含字母、数字或其他的字符
元素名称不能以数字或者标点符号开始
元素名称中不能含空格
XML中的转义符列表:
2)解析XML技术:
DOM:
基于XML文档树结构的解析
适用于多次访问的XML文档
特点:比较消耗资源
SAX:
基于事件的解析
适用于大数据量的XML文档
特点:占用资源少,内存消耗小
DOMJ4:
非常优秀的java XML API
性能优异、功能强大
开放源代码
2-1)DOM解析XML:增删改查d
DOM介绍:文档对象模型(Document Object Model):DOM把XML文档映射成一个倒挂的树
代码演示DOM解析XML
2-2)使用SAX与DOM4J解析XML:增删改查读
需要结合DOM4j架包使用:下载链接地址如下:
需要先将架包引用到项目中:
代码演示如下:
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dom4jXml {
public static void main(String[] args) throws Exception {
// 读取XML
// reader();
// 添加XML节点
// addXml();
// 修改节点数据
// modfiy();
// modfiy1();
// 删除节点
// delete();
// delete1();
}
/**
* 读取XML文件
*/
public static void reader() throws Exception {
// 创建读取器
SAXReader reader = new SAXReader();
// 读取xml文档
Document read = reader.read("lbl/NewFile.xml");
// 获取根节点
Element rootElement = read.getRootElement();
// 遍历根节点下的子节点信息
for (Object item : rootElement.elements()) {
// 拿到子节点下的值
String text = ((Element) item).element("bookName").getText();
System.out.println(text);
// 拿到当前节点的属性值
System.out.println(((Element) item).attribute("id").getText());
}
}
/**
* 向XML文件添加节点
*/
public static void addXml() throws Exception {
// 创建读取器
SAXReader reader = new SAXReader();
// 读取xml文档
Document read = reader.read("lbl/NewFile.xml");
// 获取根节点
Element rootElement = read.getRootElement();
// 创建要添加的节点
Element createElement = DocumentHelper.createElement("book");
createElement.setAttributeValue("id", "003");
createElement.setAttributeValue("type", "测试数据");
// 创建添加的节点的3个子节点
Element createElement1 = DocumentHelper.createElement("bookName");
createElement1.setText("唔明书");
Element createElement2 = DocumentHelper.createElement("bookPrice");
createElement2.setText("20");
Element createElement3 = DocumentHelper.createElement("bookAuthor");
createElement3.setText("测试");
// 把3个子节点 添加到book节点下
createElement.add(createElement1);
createElement.add(createElement2);
createElement.add(createElement3);
// 把book子节点添加到根节点下
rootElement.add(createElement);
// 重新将XML写入硬盘
OutputStream ou = new FileOutputStream("lbl/NewFile.xml");
Writer wr = new OutputStreamWriter(ou, "utf-8");
read.write(wr);
wr.close();
ou.close();
System.out.println("add ok");
}
/**
* 修改节点信息
*/
public static void modfiy() throws Exception {
// 创建读取器
SAXReader reader = new SAXReader();
// 读取xml文档
Document read = reader.read("lbl/NewFile.xml");
// 获取根节点
Element rootElement = read.getRootElement();
// 拿到要修改的节点
for (Object element : rootElement.elements()) {
if (((Element) element).attribute("id").getText().equals("003")) {
((Element) element).element("bookName").setText("数据测试!");
break;
}
}
/**
* ((Element) element).element("bookName").setName("数据测试!");修改节点name名称
*/
// 重新将XML写入硬盘
OutputStream ou = new FileOutputStream("lbl/NewFile.xml");
Writer wr = new OutputStreamWriter(ou, "utf-8");
read.write(wr);
wr.close();
ou.close();
System.out.println("modfiy ok");
}
/**
* 修改节点信息方案二 Text
*/
public static void modfiy1() throws Exception {
// 创建读取器
SAXReader reader = new SAXReader();
// 读取xml文档
Document read = reader.read("lbl/NewFile.xml");
// 获取根节点
Element rootElement = read.getRootElement();
// 拿到要修改的节点---方式二 Text true
@SuppressWarnings("unchecked")
List<Object> attributes = (rootElement.elements());
Element ment = (Element) attributes.get(1);
ment.element("bookName").setText("青年测试");
// 重新将XML写入硬盘
OutputStream ou = new FileOutputStream("lbl/NewFile.xml");
Writer wr = new OutputStreamWriter(ou, "utf-8");
read.write(wr);
wr.close();
ou.close();
System.out.println("modfiy ok");
}
/**
* 删除节点信息
*/
public static void delete() throws Exception {
// 创建读取器
SAXReader reader = new SAXReader();
// 读取xml文档
Document read = reader.read("lbl/NewFile.xml");
// 获取根节点
Element rootElement = read.getRootElement();
// 拿到要修改的节点
for (Object element : rootElement.elements()) {
if (((Element) element).attribute("id").getText().equals("003")) {
rootElement.remove(((Element) element));
break;
}
}
// 重新将XML写入硬盘
OutputStream ou = new FileOutputStream("lbl/NewFile.xml");
Writer wr = new OutputStreamWriter(ou, "utf-8");
read.write(wr);
wr.close();
ou.close();
System.out.println("delete ok");
}
/**
* 删除节点方式二 Text true
*/
public static void delete1() throws Exception {
// 创建读取器
SAXReader reader = new SAXReader();
// 读取xml文档
Document read = reader.read("lbl/NewFile.xml");
// 获取根节点
Element rootElement = read.getRootElement();
// 拿到要修改的节点---方式二 Text true
@SuppressWarnings("unchecked")
List<Object> attributes = (rootElement.elements());
Element ment = (Element) attributes.get(1);
rootElement.remove(ment);
// 重新将XML写入硬盘
OutputStream ou = new FileOutputStream("lbl/NewFile.xml");
Writer wr = new OutputStreamWriter(ou, "utf-8");
read.write(wr);
wr.close();
ou.close();
System.out.println("delete ok");
}
}
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释