Java读写xml文件操作(3W)what why how where
一. what
1.xml是一种可扩展的标记语言。
2.标记语言:是一种通过标签来描述数据的一门语言。
3.可扩展:标签的名字可以自己定义。
4.可以说xml文件是由标签组成,而标签是可以自定义的。
二. why
xml的作用:(主要就是存储数据)
网络数据传输.
数据存储
配置文件
一般的编程, 多数用来存储配置信息 . 拿JDBC来说,可以把数据库连接字符串写到xml,如果要修改数据源,只需要改xml就可以了,没必要再去重新编译java文件,而且,这些配置信息放在一起,别的人来读你写的代码的时候,就方便了很多,java项目完成之后,每个模块应该都是独立的,模块之间的关系都可以使用xml来进行维护,spring就是这样的一个框架,一个好的项目,需要有良好的可拓展性,如果把所有的逻辑关系还有配置信息都写入代码中,会使程序的可拓展性变差,为了解决这个问题,xml就可以对整个项目进行调度(spring)
还有使用xml作为数据储存,不同的xml起到不同的作用:比如说web项目的中的配置文件起到配置路径作用。spring的配置文件起到配置javabean的实例化以及整合框架的作用,在之前一期项目中有用到。还有一些xml文件中存放了一些数据供程序读取。其实说到底配置文件就是存储数据用的相当于小型数据库
主要是先到先得,人家弄的时候xml是最好的选择,你现在觉得yaml好,新生态都用了yaml,20年后你的后辈可能又要提问了:我觉得yaml....,为什么不用xxxx?
历史潮流浩浩荡荡,不变的只有变化本身
三. how where
XML文档声明
<?xml version="1.0" encoding="UTF-8"?>
标记 ( 元素 / 标签 / 节点)
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
JDOM是由第三方提供和维护的一组标准的Java实现,用来以Java语言形式解析XML文档;因此它知识和与Java平台语言,JDOM不遵循任何DOM实现标准,它只和Java相关
JDOM对XML文档实现最为简单的读写操作,JDOM将XML文档中的每个节点(node)称之为Element(元素),并提供对元素上下级元素的获取等实用方法
JDOM解析XML大体分为两种操作
读取目标XML文档并解析,封装成运行时的Java对象进行处理
将运行的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文档
创建SAXBuilder用来构建加载目标XML文档
基于XML路径创建XML文件对象
使用SAXBuilder加载XML文件对象
利用JDOM相关方法解析XML文档封装为Java对象
3. JDOM写入文档
创建XMLOutputter对象用来修改写入XML文档
基于XML路径创建XML文件对象
使用SAXBuilder加载XML文件对象
利用JDOM相关方法将修改信息写入到目标XML文件
(2) DOM4J
1. DOM4J解析XML文件
DOM4J是由第三方提供扩展子JDOMAPI的一组解析XML文件的java实现,它只和Java相关
DOM4J对XML文档实现与JDOM类似,JDOM将XML文档中的每个节点(node)称之为Element(元素),并提供对元素上下级元素的获取等实用方法
DOM4J解析XML大体分为两步操作:
获取目标XML文档并解析,封装成运行时的Java对象进行处理
将运行时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相关推荐
- [QT操作XML]QT读写XML文件,QT修改XML文件
[QT操作XML]QT读写XML文件 XML简介 QT操作XML,写入.读取.修改 XML效果演示 XML简介 概念:Extensible Markup Language 可扩展标记语言(可扩展:标签 ...
- JAVA编程TXT文件_java开发之读写txt文件操作的实现
项目结构: 运行效果: ======================================================== 下面是代码部分: ====================== ...
- java dom读写xml文件_java通过dom读写xml文件
java通过dom读写xml文件 要读的xml文件 encoding="GB2312"?> "男"> 李华姓名> 14年龄> 学生> ...
- 【Java 编程】文件操作,文件内容的读写—数据流
一.认识文件 1.什么是文件 平时说的文件一般都是指存储在硬盘上的普通文件 形如 txt, jpg, mp4, rar 等这些文件都可以认为是普通文件,它们都是在硬盘上存储的 在计算机中,文件可能是一 ...
- Java操作Excel之POI:java读写excel文件以及打印设置
Java操作Excel之POI:java读写excel文件以及打印设置 POI的jar包下载地址:http://poi.apache.org/download.html 注意:项目中导入poi 4.0 ...
- dom4j读写xml文件
dom4j读写xml文件 首先我们给出一段示例程序: import java.io.File; import java.io.FileWriter; import java.util.Iterator ...
- XML格式文件详解及Java解析XML文件内容方法
XML格式文件详解 1.概述 XML,即可扩展标记语言,XML是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,可以说它是一个拥有互联网最高级别通行证的数据携带者. ...
- Java解析xml文件dom4j篇(基于xml配置文件完成Excel数据的导入、导出功能完整实现)
DOM4J解析XML文件 dom4j是一个Java的XML API,是jdom的升级产品,用来读写XML文件.另外对比其他API读写XML文件,dom4j是一个十分优秀的JavaXML API,具有性 ...
- java流与文件——操作文件
[0]README 0.1) 本文描述转自 core java volume 2, 旨在理解 java流与文件--操作文件 的相关知识: 0.2) for source code, please vi ...
最新文章
- singleInstance和singleTask导致startActivityForResult回调失败
- 安装启动gui卡住_为什么Windows 10升级安装卡住了,原因在这
- python中operator.itemgetter函数
- 今日arXiv精选 | 15篇EMNLP 2021最新论文
- 了解你所不知道的SMON功能(五):Recover Dead transaction
- c html转为datatable,C#中DataTable导出为HTML格式的方法
- 神奇的幻方2015提高组d1t1
- java定义一个course类,求指教定义一个学生类 ,大学生小学生,定义一个选课接口...
- 程序员需要知道的8个Linux命令
- 一步步分析-C语言如何面向对象编程
- Content后台的获取为什么为空
- JavaScript数据结构——链表(Linked List)
- OpenJudge 8782 乘积最大——S.B.S
- java基础知识整理(精简)
- mfc 学习的第一天
- 关于软件开发的个人体会
- Visual Studio Code的下载与安装
- CSDN博客新增「评论置顶」、「定时发布」功能,翘首期盼的PC版「每日一练」上线!【第14期*2021.9.22】
- 计算机毕业设计springboot基于疫情背景下的新型点餐送餐系统bpe1s源码+系统+程序+lw文档+部署
- 树洞OCR文字识别v1.1.0官方版