XML
临时存储数据:
-
变量
-
数组
-
对象
-
对象数组
-
集合
持久性存储数据:
1. XML 概述
XML:eXtensible MarkuP Language ,可扩展的标记语言。
标记语言:
可扩展的:
XML 是一种数据传输格式!这方面已经很弱了,因为现在有 JSON 格式。
XML 也可以作为一种小型应用的数据存储方案。
XML 可以用作一些项目的配置文件。
2. XML 基本文档结构
<?xml version="1.0" encoding="UTF-8"?>
<自定义根标签>
<其他自定义标签></其他自定义标签>
</自定义根标签>
3. 编写格式良好的XML
-
标签名可以由字母、数字、连字符等组成(特殊符号不要使用)
-
标签名建议全部小写,如果双标签有大写的标签,那么记得对应的标签要保持一致。
<student></Student>
区分大小写 -
属性名建议全部小写。
-
如果真的需要在 XML 中编写特殊字符,记得使用对应的转义符。
>
>
<
<
&
&
'
"
- …
<![CDATA[特殊字符内容]]>
适合于特殊字符较多的场景
-
标签必须正确嵌套,并且保证同级对齐,下一级缩进。
4. 使用Java操作XML
解析XML文件。
DOM
DOM4J
4.1 DOM 树
将 XML 中的标签,以 DOM 树的形式加载好,然后就可以借助于节点间的关系来进行标签操作。
4.2 DOM4J使用
查询数据
// 解析 XML
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/books.xml"));
// 获取根节点
Element rootElement = document.getRootElement();
// 遍历根节点的所有子节点(元素节点)
List<Element> bookEleList = rootElement.elements("book");
for (Element bookEle : bookEleList) {
// 获取book节点下的指定元素节点内容
String author = bookEle.elementText("author");
String title = bookEle.elementText("title");
String description = bookEle.elementText("description");
// 获取book节点下的指定属性节点内容
String id = bookEle.attributeValue("id");
System.out.println(id + "-" + title + "-" + author + "-" + description);
}
新增数据
// 解析 XML
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/books.xml"));
// 获取根节点
Element rootElement = document.getRootElement();
Element bookEle = rootElement.addElement("book");
// 添加属性
bookEle.addAttribute("id", "bk003");
// 添加子元素
bookEle.addElement("author").addText("查老师");
bookEle.addElement("title").addText("Java从入门到放弃");
bookEle.addElement("description").addText("从希望到绝望,从入门到入坟。");
// 写入到文件
// 紧凑格式
// OutputFormat format = OutputFormat.createCompactFormat();
// 漂亮格式
OutputFormat format = OutputFormat.createPrettyPrint();
// 指定好输出地址和格式
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/books.xml"), format);
// 将document内容输出
xmlWriter.write(document);
xmlWriter.close();
修改数据
// 解析 XML
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/books.xml"));
// 更换bk003的作者为王伊楠
Element rootElement = document.getRootElement();
List<Element> bookEleList = rootElement.elements("book");
for (Element bookEle : bookEleList) {
String id = bookEle.attributeValue("id");
if ("bk003".equals(id)) {
bookEle.element("author").setText("王伊楠");
break;
}
}
// 写入到文件
// 紧凑格式
// OutputFormat format = OutputFormat.createCompactFormat();
// 漂亮格式
OutputFormat format = OutputFormat.createPrettyPrint();
// 指定好输出地址和格式
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/books.xml"), format);
// 将document内容输出
xmlWriter.write(document);
xmlWriter.close();
System.out.println("更新成功!");
删除数据
// 解析 XML
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/books.xml"));
// 删除bk003图书
Element rootElement = document.getRootElement();
List<Element> bookEleList = rootElement.elements("book");
for (Element bookEle : bookEleList) {
String id = bookEle.attributeValue("id");
if ("bk003".equals(id)) {
bookEle.getParent().remove(bookEle);
break;
}
}
// 写入到文件
// 紧凑格式
// OutputFormat format = OutputFormat.createCompactFormat();
// 漂亮格式
OutputFormat format = OutputFormat.createPrettyPrint();
// 指定好输出地址和格式
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/books.xml"), format);
// 将document内容输出
xmlWriter.write(document);
xmlWriter.close();
System.out.println("删除成功!");
yPrint();
// 指定好输出地址和格式
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/books.xml"), format);
// 将document内容输出
xmlWriter.write(document);
xmlWriter.close();
System.out.println("删除成功!");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。