XML概述
作者:互联网
XML
临时存储数据:
-
变量
-
数组
-
对象
-
对象数组
-
集合
持久性存储数据:
- 文件(IO流)
- XML(规范较为标准的文件格式)
- 数据库
1. XML 概述
XML:eXtensible Markup Language ,可扩展的标记语言。
标记语言:
- 语言:可以和其他人进行交流的工具,汉语、英语;汉语的组成单元是汉字、英语的组成单元是字母。
- 标记语言:它的组成是标记/标签(tag)。
- 双标签:
<标签名 属性名="属性值">标签内容</标签名>
开始标签 + 结束/闭合标签 - 单标签:
<标签名 属性名="属性值/>"
自闭合标签
- 双标签:
可扩展的:
- 标签是自定义的,含义由你定
XML 是一种数据传输格式!这方面已经很弱了,因为现在有 JSON 格式。
XML 也可以作为一种小型应用的数据存储方案。
XML 可以用作一些项目的配置文件。
2. XML 基本文档结构
<?xml version="1.0" encoding="UTF-8"?>
<自定义根标签>
<其他自定义标签></其他自定义标签>
</自定义根标签>
3. 编写格式良好的XML
-
标签名可以由字母、数字、连字符等组成(特殊符号不要使用)
-
标签名建议全部小写,如果双标签有大写的标签,那么记得对应的标签要保持一致。
<student></Student>
区分大小写 -
属性名建议全部小写。
-
如果真的需要在 XML 中编写特殊字符,记得使用对应的转义符。
>
>
<
<
&
&
'
"
- …
<![CDATA[特殊字符内容]]>
适合于特殊字符较多的场景
-
所有标签都必须有结束标签
<xx></xx> <xx/>
。 -
标签必须正确嵌套,并且保证同级对齐,下一级缩进。
4. 使用Java操作XML
解析XML文件。
DOM
DOM4J
4.1 DOM 树
将 XML 中的标签,以 DOM 树的形式加载好,然后就可以借助于节点间的关系来进行标签操作。
4.2 DOM4J使用
- 下载 jar 包
- 在项目中新建 lib 文件夹
- 将 jar 包拷贝到 lib 文件夹
- 右键 jar 包 -> build path -> add to build path
- 根据 API 要求使用
查询数据
// 解析 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("删除成功!");
标签:XML,bookEle,标签,xmlWriter,概述,new,document 来源: https://blog.csdn.net/weixin_42022795/article/details/118697360