ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

XML概述

2021-07-13 12:29:49  阅读:186  来源: 互联网

标签:XML bookEle 标签 xmlWriter 概述 new document


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

  1. 标签名可以由字母、数字、连字符等组成(特殊符号不要使用)

  2. 标签名建议全部小写,如果双标签有大写的标签,那么记得对应的标签要保持一致。

    <student></Student> 区分大小写

  3. 属性名建议全部小写。

  4. 如果真的需要在 XML 中编写特殊字符,记得使用对应的转义符。

    • > &gt;
    • < &lt;
    • & &amp;
    • ' &quot;
    • <![CDATA[特殊字符内容]]> 适合于特殊字符较多的场景
  5. 所有标签都必须有结束标签 <xx></xx> <xx/>

  6. 标签必须正确嵌套,并且保证同级对齐,下一级缩进。

4. 使用Java操作XML

解析XML文件。

DOM

DOM4J

4.1 DOM 树

将 XML 中的标签,以 DOM 树的形式加载好,然后就可以借助于节点间的关系来进行标签操作。

img

4.2 DOM4J使用

  1. 下载 jar 包
  2. 在项目中新建 lib 文件夹
  3. 将 jar 包拷贝到 lib 文件夹
  4. 右键 jar 包 -> build path -> add to build path
  5. 根据 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有