一. what

1.xml是一种可扩展的标记语言。

2.标记语言:是一种通过标签来描述数据的一门语言。

3.可扩展:标签的名字可以自己定义。

4.可以说xml文件是由标签组成,而标签是可以自定义的。

二. why

xml的作用:(主要就是存储数据)

  1. 网络数据传输.

  2. 数据存储

  3. 配置文件

一般的编程, 多数用来存储配置信息 . 拿JDBC来说,可以把数据库连接字符串写到xml,如果要修改数据源,只需要改xml就可以了,没必要再去重新编译java文件,而且,这些配置信息放在一起,别的人来读你写的代码的时候,就方便了很多,java项目完成之后,每个模块应该都是独立的,模块之间的关系都可以使用xml来进行维护,spring就是这样的一个框架,一个好的项目,需要有良好的可拓展性,如果把所有的逻辑关系还有配置信息都写入代码中,会使程序的可拓展性变差,为了解决这个问题,xml就可以对整个项目进行调度(spring)

还有使用xml作为数据储存,不同的xml起到不同的作用:比如说web项目的中的配置文件起到配置路径作用。spring的配置文件起到配置javabean的实例化以及整合框架的作用,在之前一期项目中有用到。还有一些xml文件中存放了一些数据供程序读取。其实说到底配置文件就是存储数据用的相当于小型数据库

主要是先到先得,人家弄的时候xml是最好的选择,你现在觉得yaml好,新生态都用了yaml,20年后你的后辈可能又要提问了:我觉得yaml....,为什么不用xxxx?

历史潮流浩浩荡荡,不变的只有变化本身

三. how where

  1. XML文档声明

<?xml version="1.0" encoding="UTF-8"?>

  1. 标记 ( 元素 / 标签 / 节点)

XML文档,由一个个的标记组成。

1. 语法:

开始标记(开放标记):<标记名称>结束标记(闭合标记):</标记名称>类似前端的一些双标签。标记名称: 自定义名称,必须遵循以下命名规则:1.名称可以含字母、数字以及其他的字符2.名称不能以数字或者标点符号开始3.名称不能包含空格,不能包含冒号(:)4.名称区分大小写 标记内容: 开始标记与结束标记之间 ,是标记的内容. 例如 ,我们通过标记, 描述一个人名:<name>刘伟</name>5. 一个XML文档中, 必须有且且仅允许有一个根标记.正例:<names><name>张三</name><name>李四</name></names>反例:<name>张三</name><name>李四</name>6. 标记可以嵌套, 但是不允许交叉。正例:<person>       <name>张三</name><age>18</age></person>反例:
<person>
<name>李四<age></name>
18</age>
</person>7. 标记的层级称呼 (子标记, 父标记 , 兄弟标记, 后代标记 ,祖先标记)
例如:
<persons><person><name>李四</name><length>180cm</length></person><person><name>李四</name><length>200cm</length></person>
</persons>
name是person的子标记.也是person的后代标记
name是persons的后代标记.
8. 标记名称 允许重复
9. 标记除了开始和结束 , 还有属性.
标记中的属性, 在标记开始时 描述, 由属性名和属性值 组成.
格式:在开始标记中, 描述属性.可以包含0-n个属性, 每一个属性是一个键值对!属性名不允许重复 , 键与值之间使用等号连接, 多个属性之间使用空格分割.属性值 必须被引号引住.案例:<persons><person id="10001" groupid="1"><name>李四</name><age>18</age></person><person id="10002" groupid="1"><name>李四</name><age>20</age></person>
</persons>
10. 注释
注释不能写在文档文档声明前
注释不能嵌套注释
格式:
注释开始: <!--
注释结束: -->案例:
描述一组图书books, 至少包含3本书
图书book包含
图书名称name
图书简介info
以及属性id
<?xml version="1.0" encoding="UTF-8"?>
<books><book id="1001"><name>唐诗三百首</name><info>300首唐诗</info></book><book id="1002"><name>宋词两百首</name><info>200篇宋词</info></book><book id="1003"><name>元曲一百首</name><info>100首元曲</info></book></books>CDATA的使用原理(了解)
CDATA 是不应该由 XML 解析器解析的文本数据。
像 "<" 和 "&" 字符在 XML 元素中都是非法的。
"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。
"&" 会产生错误,因为解析器会把该字符解释为字符实体的开始。
Java解析XML 掌握
面试题 *
某些文本,比如 JavaScript 代码,包含大量 "<" 或 "&" 字符。为了避免错误,可以将脚本代
码定义为 CDATA。
CDATA 部分中的所有内容都会被解析器忽略。
CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束:

2. xml文件读写

(1) JDOM(与DOM4J基本上一样,不讲,了解)

1. JDOM解析XML

  1. JDOM是由第三方提供和维护的一组标准的Java实现,用来以Java语言形式解析XML文档;因此它知识和与Java平台语言,JDOM不遵循任何DOM实现标准,它只和Java相关

  2. JDOM对XML文档实现最为简单的读写操作,JDOM将XML文档中的每个节点(node)称之为Element(元素),并提供对元素上下级元素的获取等实用方法

  3. JDOM解析XML大体分为两种操作

    1. 读取目标XML文档并解析,封装成运行时的Java对象进行处理

    2. 将运行的Java对象以XML文件方式写入硬盘存储

JDOM使命:

提供一个完整的、基于 Java 的解决方案,用于从 Java 代码访问、操作和输出 XML 数据。有关我们项目目标的信息。

(参考官方文档)jdom.org

引入jar包

<!-- https://mvnrepository.com/artifact/org.jdom/jdom --><dependency><groupId>org.jdom</groupId><artifactId>jdom</artifactId><version>2.0.2</version></dependency>

2. JDOM读取XML文档

  1. 创建SAXBuilder用来构建加载目标XML文档

  2. 基于XML路径创建XML文件对象

  3. 使用SAXBuilder加载XML文件对象

  4. 利用JDOM相关方法解析XML文档封装为Java对象

3. JDOM写入文档

  1. 创建XMLOutputter对象用来修改写入XML文档

  2. 基于XML路径创建XML文件对象

  3. 使用SAXBuilder加载XML文件对象

  4. 利用JDOM相关方法将修改信息写入到目标XML文件

(2) DOM4J

1. DOM4J解析XML文件

  1. DOM4J是由第三方提供扩展子JDOMAPI的一组解析XML文件的java实现,它只和Java相关

  2. DOM4J对XML文档实现与JDOM类似,JDOM将XML文档中的每个节点(node)称之为Element(元素),并提供对元素上下级元素的获取等实用方法

  3. DOM4J解析XML大体分为两步操作:

    1. 获取目标XML文档并解析,封装成运行时的Java对象进行处理

    2. 将运行时Java对象以XML文件方式写入硬盘存储

引入jar包

<dependencies><!-- https://mvnrepository.com/artifact/org.dom4j/dom4j --><dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.1</version></dependency>
</dependencies>

2. DOM4J读XML文档

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.util.List;/*** @author :阿云(2838324678@qq.com)* @date :Created in 2022/10/10 16:12* @description:* @modified By:* @version:*/
public class TestXmlRead {public static void main(String[] args) {//1.创建读取XML文件的对象SAXReader reader = new SAXReader();//2.给一个需要读取的XML文件File file = new File("D:\\Java_projects_p\\test-xml\\src\\main\\resources\\testread.xml");if(!file.exists()) {return;}try {//3.读取文件返回文档类Document read = reader.read(file);/** 4.getRootElement();获得根标签*/Element root = read.getRootElement();/** 5.将标签中的内容作为字符串返回*/String String = root.asXML();System.out.println(String);//6.获得根标签下的所有标签List<Element> list = root.elements();for(Element e:list) {//7.获得根标签下的name标签Element nameEle = e.element("name");//8.获得标签名字String name = nameEle.getName();System.out.println("name标签的名字:"+name);//9.获得name标签下的值String nameValue = nameEle.getTextTrim();System.out.println("name标签的值:"+nameValue);//10.获得age标签下的值Element ageEle = e.element("age");java.lang.String ageValue = ageEle.getTextTrim();System.out.println("age标签的值:"+ageValue);//11.获得sex标签下的值Element sexEle = e.element("sex");java.lang.String sexValue = sexEle.getTextTrim();System.out.println("sex标签的值:"+sexValue);//12.输出一个人的所有信息System.out.println(nameValue+","+ageValue+","+sexValue);}} catch (DocumentException e) {e.printStackTrace();}}
}

3. DOM4J写xml文档

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;/*** @author :阿云(2838324678@qq.com)* @date :Created in 2022/10/10 16:47* @description:* @modified By:* @version:*/
public class TestXmlWrite {public static void main(String[] args) {try {//1.写出格式OutputFormat format = OutputFormat.createPrettyPrint();XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(new File("D:\\Java_projects_p\\test-xml\\src\\main\\resources\\testwrite.xml")),format);//2.创建一个空白文档Document document = DocumentHelper.createDocument();//3.创建根节点Element rootElement = document.addElement("list");//4.设置子节点Element emp = rootElement.addElement("emp");//5.设置子节点里面的标签。addtext是添加文本emp.addElement("name").addText("马云飞");emp.addElement("age").addText("20");emp.addElement("sex").addText("男");xmlWriter.write(document);System.out.println("操作成功");} catch (IOException e) {e.printStackTrace();}}}

Java读写xml文件操作(3W)what why how where相关推荐

  1. [QT操作XML]QT读写XML文件,QT修改XML文件

    [QT操作XML]QT读写XML文件 XML简介 QT操作XML,写入.读取.修改 XML效果演示 XML简介 概念:Extensible Markup Language 可扩展标记语言(可扩展:标签 ...

  2. JAVA编程TXT文件_java开发之读写txt文件操作的实现

    项目结构: 运行效果: ======================================================== 下面是代码部分: ====================== ...

  3. java dom读写xml文件_java通过dom读写xml文件

    java通过dom读写xml文件 要读的xml文件 encoding="GB2312"?> "男"> 李华姓名> 14年龄> 学生> ...

  4. 【Java 编程】文件操作,文件内容的读写—数据流

    一.认识文件 1.什么是文件 平时说的文件一般都是指存储在硬盘上的普通文件 形如 txt, jpg, mp4, rar 等这些文件都可以认为是普通文件,它们都是在硬盘上存储的 在计算机中,文件可能是一 ...

  5. Java操作Excel之POI:java读写excel文件以及打印设置

    Java操作Excel之POI:java读写excel文件以及打印设置 POI的jar包下载地址:http://poi.apache.org/download.html 注意:项目中导入poi 4.0 ...

  6. dom4j读写xml文件

    dom4j读写xml文件 首先我们给出一段示例程序: import java.io.File; import java.io.FileWriter; import java.util.Iterator ...

  7. XML格式文件详解及Java解析XML文件内容方法

    XML格式文件详解 1.概述 XML,即可扩展标记语言,XML是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,可以说它是一个拥有互联网最高级别通行证的数据携带者. ...

  8. Java解析xml文件dom4j篇(基于xml配置文件完成Excel数据的导入、导出功能完整实现)

    DOM4J解析XML文件 dom4j是一个Java的XML API,是jdom的升级产品,用来读写XML文件.另外对比其他API读写XML文件,dom4j是一个十分优秀的JavaXML API,具有性 ...

  9. java流与文件——操作文件

    [0]README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件--操作文件 的相关知识: 0.2) for source code, please vi ...

最新文章

  1. singleInstance和singleTask导致startActivityForResult回调失败
  2. 安装启动gui卡住_为什么Windows 10升级安装卡住了,原因在这
  3. python中operator.itemgetter函数
  4. 今日arXiv精选 | 15篇EMNLP 2021最新论文
  5. 了解你所不知道的SMON功能(五):Recover Dead transaction
  6. c html转为datatable,C#中DataTable导出为HTML格式的方法
  7. 神奇的幻方2015提高组d1t1
  8. java定义一个course类,求指教定义一个学生类 ,大学生小学生,定义一个选课接口...
  9. 程序员需要知道的8个Linux命令
  10. 一步步分析-C语言如何面向对象编程
  11. Content后台的获取为什么为空
  12. JavaScript数据结构——链表(Linked List)
  13. OpenJudge 8782 乘积最大——S.B.S
  14. java基础知识整理(精简)
  15. mfc 学习的第一天
  16. 关于软件开发的个人体会
  17. Visual Studio Code的下载与安装
  18. CSDN博客新增「评论置顶」、「定时发布」功能,翘首期盼的PC版「每日一练」上线!【第14期*2021.9.22】
  19. 计算机毕业设计springboot基于疫情背景下的新型点餐送餐系统bpe1s源码+系统+程序+lw文档+部署
  20. 树洞OCR文字识别v1.1.0官方版

热门文章

  1. DWORD,CString等类型转换
  2. __repr__ 方法的作用
  3. 2021吃透这些Linux知识点,稳拿大厂offer
  4. 智能理解是人工智能发展的“刚需” ——2015年人工智能大会反思
  5. 二维码生成工具源码(C#版)
  6. c语言 序列化,序列化和反序列化
  7. 图同构领域一些专业术语
  8. 小牧用Python 爬取数万条房产数据,揭秘一线城市生存压力有多大
  9. i7 1260P怎么样 相当于什么水平
  10. C/C++ volite关键字