当前位置:网站首页>XML usage
XML usage
2022-08-06 11:24:00 【Little Ludan】
目录
一、XML 简介
xml 是可扩展的标记性语言.
xml 的主要作用有:
- 用来保存数据,而且这些数据具有自我描述性
- 它还可以做为项目或者模块的配置文件
- 还可以做为网络传输数据的格式(现在 JSON 为主)
二、XML语法
1、文档声明
我们先创建一个简单 XML 文件,用来描述图书信息.
<?xml version="1.0" encoding="UTF-8"?> xml声明.
<!--
xml声明
version是版本的意思
encoding是编码
standalone="yes/no" 表示这个xml文件是否是独立的 xml文件
-->
<books>
<!-- book标签描述一本图书 id属性描述的是图书的编号 -->
<book id="SN123123413241">
<!-- nameTags describe information about the book -->
<name>java编程思想</name>
<!-- author单词是作者的意思 ,描述图书作者 -->
<author>华仔</author>
<!-- price单词是价格,描述的是图书的价格 -->
<price>9.9</price>
</book>
</books>2、XML元素
元素是指从开始标签到结束标签的内容.
1)XML标签命名规则
- 名称可以含字母、数字以及其他的字符
- 名称不能以数字或者标点符号开始
- 名称不能包含空格
2)xml 属性
xml 的标签属性和 html 的标签属性是非常类似的,属性可以提供元素的额外信息
在标签上可以书写属性:
- 一个标签上可以书写多个属性.每个属性的值必须使用引号引起来,不引会报错.
- 规则和标签的书写规则一致.
3、语法规则
- 所有 XML 元素都须有关闭标签(也就是闭合)
- XML 标签对大小写敏感
- XML 必须正确地嵌套
- XML 文档必须有根元素,The root element is the element without a parent tag,而且是唯一一个才行
- XML 中的特殊字符,例如 >特殊字符:>,<特殊字符:<
- 文本区域(CDATA 区),CDATA 语法可以告诉 xml 解析器,我 CDATA 里的文本内容,只是纯文本,不需要 xml 语法解析
CDATA 格式:
<![CDATA[ 这里可以把你输入的字符原样显示,不会解析 xml ]]>三、xml 解析技术
1、xml 解析技术介绍
不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织制定的 dom 技术来解析.

document 对象表示的是整个文档(可以是 html 文档,也可以是 xml 文档)
早期 JDK 为我们提供了两种 xml 解析技术 DOM 和 Sax 简介(已经过时,但我们需要知道这两种技术)
dom 解析技术是 W3C 组织制定的,而所有的编程语言都对这个解析技术使用了自己语言的特点进行实现.Java 对 dom 技术解析标记也做了实现.
sun 公司在 JDK5 版本对 dom 解析技术进行升级:SAX( Simple API for XML )
SAX 解析,它跟 W3C 制定的解析不太一样.它是以类似事件机制通过回调告诉用户当前正在解析的内容,它是一行一行的读取 xml 文件进行解析的,不会创建大量的 dom 对象.所以它在解析 xml 的时候,Better in memory usage and performance Dom 解析.
第三方的解析:
- jdom 在 dom 基础上进行了封装 、
- dom4j 又对 jdom 进行了封装.
- pull 主要用在 Android 手机开发,是在跟 sax 非常类似都是事件机制解析 xml 文件
2、dom4j 解析技术
由于 dom4j 它不是 sun 公司的技术,而属于第三方公司的技术,我们需要使用 dom4j 就需要到 dom4j 官网下载 dom4j 的 jar 包.
1)dom4j 编程步骤:
- 先加载 xml 文件创建 Document 对象
- 通过 Document 对象拿到根元素对象
- 通过根元素.elelemts(标签名); 可以返回一个集合,这个集合里放着.所有你指定的标签名的元素对象
- 找到你想要修改、删除的子元素,进行相应的操作
- 保存到硬盘上
2)具体操作
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book sn="SN12341232">
<name>辟邪剑谱</name>
<price>9.9</price>
<author>班主任</author>
</book>
<book sn="SN12341231">
<name>葵花宝典</name>
<price>99.99</price>
<author>班长</author>
</book>
</books>遍历标签获取所有标签中的内容
@Test
public void test2() throws DocumentException {
//1.读取books.xml文件
SAXReader reader = new SAXReader();
//在Jubit测试中,相对路径是从模块名开始算
Document document = reader.read("src/books.xml");
//2.通过document对象获取根元素
Element rootElement = document.getRootElement();
//3.通过根元素获取book标签对象
//Element.elements(标签名)它可以拿到当前元素下的指定的子元素的集合
List<Element> books = rootElement.elements("book");
//4.遍历,Process each label intoBook类
for(Element book:books){
//asXML():把标签对象转换为标签字符串
Element nameElement = book.element("name");
//asXML():把标签对象转换为标签字符串
System.out.println(nameElement.asXML());
//getText():文本内容
System.out.println(nameElement.getText());
//attributeValue:标签的属性值
System.out.println(book.attributeValue("sn"));
}
}输出结果:
<name>辟邪剑谱</name>
辟邪剑谱
SN12341232
<name>葵花宝典</name>
葵花宝典
SN12341231
边栏推荐
- PAT甲级打卡-1005-1010
- How to use wireless serial communication module to realize long-distance communication between touch screen and PLC?
- 户外移动电源:华宝新能、EcoFlow上演“龙虎斗”
- 链路聚合简述
- Chat about dynamic proxy IP
- Kubernetes 架构知识
- d find the function in the package
- 接口的安全设计要素有哪些?
- NC1 Addition of Large Numbers
- 零数科技携文化和旅游部艺术发展中心发布“文化艺术链”
猜你喜欢

How to use wireless serial communication module to realize long-distance communication between touch screen and PLC?

WeChat applet: how to center the text in the button

Small program product list paging implementation

小程序商品列表分页实现

【RTOS训练营】定时器的机制、源码分析和晚课提问

NC1 大数加法

蓝帽杯2022年半决赛 writeup(附取证题目+解压密码+附件)

kubernetes 常见架构图

Kubernetes 架构知识

The entry node of the ring in the NC3 linked list
随机推荐
怎么解决电脑桌面一刷新就闪屏的问题?
Su Qiugui: Why do foreign trade companies need to do Google subdivision deployment
AIRIOT答疑第7期|如何快速提升物联网项目交付速度?
怎样解决开始菜单的图标不能拖放的问题?
Kubernetes 架构知识
ABP详细教程——模块类
CISP-PTE实操练习题讲解一(新版)
主板故障!教你如何用主板诊断卡检测维修电脑主板故障
WeChat applet: how to center the text in the button
009:实验环境
NC3 链表中环的入口结点
How to use wireless serial communication module to realize long-distance communication between touch screen and PLC?
JVS快速开发平台列表页配置
使用 husky+commitlint 检查提交描述是否符合规范要求,及提交代码进行格式化
Talk about the dynamic proxy IP
电脑嗡嗡响怎么回事?电脑发热嗡嗡响原因及解决方法
NetEase Cloud Media Center for Audio and Video Capabilities, Focusing on the Digital Transformation of the Banking Industry
【软件测试笔试题】阿里巴巴(中国)网络技术有限公司
d named unit test
工作六年的感悟