XML 简介

什么是 xml?

xml 是可扩展的标记性语言。

xml 的作用?

xml 的主要作用有:

1、用来保存数据,而且这些数据具有自我描述性

2、它还可以做为项目或者模块的配置文件

3、还可以做为网络传输数据的格式(现在 JSON 为主)。

xml 语法

  1. 文档声明。
  2. 元素(标签)
  3. xml 属性
  4. xml 注释
  5. 文本区域(CDATA 区)

文档声明

我们先创建一个简单 XML 文件,用来描述图书信息

(1)创建一个 xml 文件

文件名:

<?xml version="1.0" encoding="UTF-8"?> xml 声明。
<!-- xml 声明 version 是版本的意思 encoding 是编码 -->

而且这个<?xml 要连在一起写,否则会有报错

属性

version 是版本号
encoding 是 xml 的文件编码
standalone="yes/no" 表示这个 xml 文件是否是独立的 xml 文件

(2)图书有 id 性 属性 一 表示唯一 标识,书名,有作者,价格的信息

books.xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<!-- xml 声明 version 是版本的意思 encoding 是编码 -->
<books> <!-- 这是 xml 注释 -->
<book id="SN9787302575443"> <!-- book 标签描述一本图书 id 属性描述 的是图书 的编号 -->
<name>Java 2实用教程(第6版)</name> <!-- name 标签描述 的是图书 的信息 -->
<author>耿祥义、张跃平</author> <!-- author 单词是作者的意思 ,描述图书作者 -->
<publisher>清华大学出版社</publisher> <!--publisher 单词是出版社的意思,描述图书的出版社-->
<price>65</price> <!-- price 单词是价格,描述的是图书 的价格 -->
</book>
<book id="SN9787020122172"> <!-- book 标签描述一本图书 id 属性描述 的是图书 的编号 -->
<name>骆驼祥子</name> <!-- name 标签描述 的是图书 的信息 -->
<author>老舍</author> <!-- author 单词是作者的意思 ,描述图书作者 -->
<publisher>人民文学出版社</publisher> <!--publisher 单词是出版社的意思,描述图书的出版社-->
<price>20.20</price><!-- price 单词是价格,描述的是图书 的价格 -->
</book>
</books>

在浏览器中可以查看到文档:



xml 注释

html 和 XML 注释 一样 :

<!-- html 注释 -->

元素(标签)

html 标签

格式 <标签名>封装的数据</标签名>
单标签 <标签名 /> <br /> 换行 <hr />水平线
双标签 <标签名>封装的数据</标签名>

1. 标签名大小写不敏感

2. 标签有属性,有基本属性和事件属性

3. 标签要闭合(不闭合 ,html 中不报错。但我们要养成良好的书写习惯。闭合)

1)什么是 xml 元素

元素是指从开始标签到结束标签的内容。

例如:

<title>java2实用教程</title>

元素 我们可以简单的理解为是 标签。

Element 翻译 元素

2)XML 命名规则

XML 元素必须遵循以下命名规则:

  1. 名称可以含字母、数字以及其他的字符

    例如:
<book id="SN9787302575443"> <!-- book 标签描述一本图书 id 属性描述 的是图书 的编号 -->
<name>Java 2实用教程(第6版)</name> <!-- name 标签描述 的是图书 的信息 -->
<author>耿祥义、张跃平</author> <!-- author 单词是作者的意思 ,描述图书作者 -->
<publisher>清华大学出版社</publisher> <!--publisher 单词是出版社的意思,描述图书的出版社-->
<price>65</price> <!-- price 单词是价格,描述的是图书 的价格 -->
  1. 名称不能以数字或者标点符号开始

  1. 尽管以“xml”(或者 XML、Xml)是可以的、不报错的,但是不建议名称以字符 “xml”(或者 XML、Xml)开始

  1. 名称不能包含空格

3)xml 也 中的元素(标签)也 成 分成 单标签和双标签:

单标签

格式:

<标签名 属性=”值” 属性=”值” ...... />

双标签

格式:

< 标签名 属性=”值” 属性=”值” ......>文本数据或子标签</标签名>

xml 属性

xml 的标签属性和 html 的标签属性是非常类似的, 属性可以提供元素的额外信息

在标签上可以书写属性:

一个标签上可以书写多个属性。每个属性的值必须使用 引号 引起来。

的规则和标签的书写规则一致。

API文档截图:

  1. 属性必须使用引号引起来,不引起来会报错

    示例:

语法规则

  1. 所有 XML 元素都须有关闭标签

  1. XML 标签对大小写敏感

  2. XML 必须正确地嵌套

  3. XML 文档必须有根元素

    根元素就是顶级元素,

    没有父标签的元素,叫顶级元素。

    根元素是没有父标签的顶级元素,而且是唯一一个才行。

  4. XML 的属性值须加引号

  5. XML 中的特殊字符





7. 文本区域(CDATA 区)

CDATA 语法可以告诉 xml 解析器,我 CDATA 里的文本内容,只是纯文本,不需要 xml 语法解析

CDATA 格式:

<![CDATA[ 这里可以把你输入的字符原样显示,不会解析 xml ]]>

示例:

    <book id="SN9787302575443"> <!-- book 标签描述一本图书 id 属性描述 的是图书 的编号 -->
<name>Java 2实用教程(第6版)</name> <!-- name 标签描述 的是图书 的信息 -->
<author><![CDATA[<<<耿祥义、张跃平>>>]]></author> <!-- author 单词是作者的意思 ,描述图书作者 -->
<publisher>清华大学出版社</publisher> <!--publisher 单词是出版社的意思,描述图书的出版社-->
<price>65</price> <!-- price 单词是价格,描述的是图书 的价格 -->
</book>

xml 解析技术介绍

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 的时候,在内存的使用上。和性能上。都优于 Dom 解析。

第三方的解析:

jdom 在 dom 基础上进行了封装 、dom4j 又对 jdom 进行了封装。

pull 主要用在 Android 手机开发,是在跟 sax 非常类似都是事件机制解析 xml 文件。

这个 Dom4j 它是第三方的解析技术。我们需要使用第三方给我们提供好的类库才可以解析 xml 文件。

dom4j 解析技术

Dom4j 类库的使用

Dom4j包下载:https://kohler.lanzouv.com/iv8R207qmvkh

解压后:

dom4j 目录的介绍

  1. docs 是文档目录

  1. 查 如何查 Dom4j 的文档

  1. Dom4j 快速入门

  1. lib 目录



5. src 目录是第三方类库的源码目录

dom4j 编程步骤

第一步: 先加载 xml 文件创建 Document 对象

第二步:通过 Document 对象拿到根元素对象

第三步:通过根元素.elelemts(标签名); 可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象

第四步:找到你想要修改、删除的子元素,进行相应在的操作

第五步,保存到硬盘上

获取 document 对象

创建一个 lib 目录,并添加 dom4j 的 jar 包。并添加到类路径。



需要解析的 books.xml 文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<!-- xml 声明 version 是版本的意思 encoding 是编码 -->
<books> <!-- 这是 xml 注释 -->
<book id="SN9787302575443"> <!-- book 标签描述一本图书 id 属性描述 的是图书 的编号 -->
<name>Java 2实用教程(第6版)</name> <!-- name 标签描述 的是图书 的信息 -->
<author><![CDATA[<<<耿祥义、张跃平>>>]]></author> <!-- author 单词是作者的意思 ,描述图书作者 -->
<publisher>清华大学出版社</publisher> <!--publisher 单词是出版社的意思,描述图书的出版社-->
<price>65</price> <!-- price 单词是价格,描述的是图书 的价格 -->
</book>
<book id="SN9787020122172"> <!-- book 标签描述一本图书 id 属性描述 的是图书 的编号 -->
<name>骆驼祥子</name> <!-- name 标签描述 的是图书 的信息 -->
<author>老舍</author> <!-- author 单词是作者的意思 ,描述图书作者 -->
<publisher>人民文学出版社</publisher> <!--publisher 单词是出版社的意思,描述图书的出版社-->
<price>20.20</price><!-- price 单词是价格,描述的是图书 的价格 -->
</book>
</books>

解析获取 Document 对象的代码

第一步,先创建 SaxReader 对象。这个对象,用于读取 xml 文件,并创建

Document

/*
* dom4j 获取 Documet 对象
*/
@Test
public void getDocument() throws DocumentException {
// 要创建一个 Document 对象,需要我们先创建一个 SAXReader 对象
SAXReader reader = new SAXReader();
// 这个对象用于读取 xml 文件,然后返回一个 Document。
Document document = reader.read("src/books.xml");
// 打印到控制台,看看是否创建成功
System.out.println(document);
}

遍历 、遍历 签 标签 获取所有标签中的内容

 /*
* 读取 xml 文件中的内容(xml文件即上一步的books.xml)
*/
@Test
public void readXML() throws DocumentException {
// 需要分四步操作:
// 第一步,通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象
// 第二步,通过 Document 对象。拿到 XML 的根元素对象
// 第三步,通过根元素对象。获取所有的 book 标签对象
// 第四小,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,再通过 getText() 方法拿到起始标签和结束标签之间的文本内容
// 第一步,通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象
SAXReader reader = new SAXReader();
//在Junit测试中,相对路径是从模块名开始算
Document document = reader.read("src/books.xml");
//第二步,通过 Document 对象。拿到 XML 的根元素对象
Element rootElement = document.getRootElement();
//System.out.println(rootElement);
//第三步,通过根元素对象。获取所有的 book 标签对象
//Element.elements(标签名)它可以拿到当前元素下的指定的子元素的集合
//element()和elements()都是通过标签名查找子元素
List <Element> books = rootElement.elements("book");
//第四步,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,
for (Element book : books) {
// 拿到 book 下面的 name 元素对象
Element nameElement = book.element("name");
// 拿到 book 下面的 price 元素对象
Element priceElement = book.element("price");
// 拿到 book 下面的 author 元素对象
Element authorElement = book.element("author");
// 拿到 book 下面的 publisher 元素对象
Element publisherElement = book.element("publisher");
// 再通过 getText() 方法拿到起始标签和结束标签之间的文本内容
System.out.println("书名:" + nameElement.getText() + " , 价格:"
+ priceElement.getText() + "元, 作者:" + authorElement.getText() + ",出版社:" + publisherElement.getText());
}
}
}

打印内容:

如图片失效等情况请参阅公众号文章:https://mp.weixin.qq.com/s/T4tsUg4_YRiDRPEF7fhOtQ

欢迎关注公众号:“愚生浅末”,一起学习交流。

XML入门介绍的更多相关文章

  1. XMl入门介绍及php操作XML

    一.什么是XML XML全称:Extensible Markup Language 中文名:可扩展标记语言 用于标记电子文件使其具有结构性的标记语言,可以用来标记数据,定义数据类型,允许用户对自己的标 ...

  2. XML入门介绍(什么是XML及XML格式)

    什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language). XML 是一种很像HTML的标记语言. XML 的设计宗旨是传输数据,而不是显示数据. XML 标 ...

  3. .NET读写Excel工具Spire.Xls使用(1)入门介绍

    原文:[原创].NET读写Excel工具Spire.Xls使用(1)入门介绍 在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式 ...

  4. mybatis入门介绍一

    首先介绍一下Mybatis是什么?mybatis是Java的持久层框架, JAVA操作数据库是通过jdbc来操作的,而mybatis是对jdbc的封装. 使用mybatis之后,开发者只需要关注sql ...

  5. mybatis入门介绍二

    相信看过我的上一篇博客的同学都已经对mybatis有一个初步的认识了.这篇博客主要是对mybatis的mapper代理做一下简单的介绍,希望能够帮助大家共同学习. 我的上一篇博客:mybatis入门介 ...

  6. Android CoordinatorLayout 入门介绍

    Android CoordinatorLayout 入门介绍 CoordinatorLayout View 知道如何表现 在 2015 年的 I/O 开发者大会上,Google 介绍了一个新的 And ...

  7. XML基础介绍【一】

    XML基础介绍[一] 1.XML简介(Extensible Markup Language)[可扩展标记语言] XML全称为Extensible Markup Language, 意思是可扩展的标记语 ...

  8. XML基础介绍【二】

    XML基础介绍[二] 1.schema约束dtd语法: <!ELEMENT 元素名称 约束>schema符合xml的语法,xml语句.一个xml中可以有多个schema,多个schema使 ...

  9. (转)MQTT 入门介绍

    原文链接:https://blog.csdn.net/qq_2887... MQTT 入门介绍 一.简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测 ...

随机推荐

  1. python学习-Day32

    目录 今日内容详细 软件开发架构 概念 软件开发架构的分类 C/S架构 B/S架构 两种架构的优缺点 C/S架构: B/S架构: tip 网络编程 概念 互联网 互联网协议 OSI七层协议简介 专业设 ...

  2. 【深度学习 论文篇 03-2】Pytorch搭建SSD模型踩坑集锦

    论文地址:https://arxiv.org/abs/1512.02325 源码地址:http://github.com/amdegroot/ssd.pytorch 环境1:torch1.9.0+CP ...

  3. CTO 说了,如果发现谁用 kill -9 关闭程序就开除

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 来源:blog.csdn.net/qq_33220089          正文    kil ...

  4. Linux系统常用命令速查手册

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 系统信息 arch      #显示机器的处理器架构(1 ...

  5. CentOS 7 执行 yum 命令失败问题的排查方法

    一个执着于技术的公众号 简介 本文主要为大家讲解 CentOS 7系统中执行yum命令失败等常见问题的排查方法. 1.执行yum命令报404错误 1)检查yum仓库是否配置正确,可以到阿里云下载rep ...

  6. 【mq】从零开始实现 mq-07-负载均衡 load balance

    前景回顾 [mq]从零开始实现 mq-01-生产者.消费者启动 [mq]从零开始实现 mq-02-如何实现生产者调用消费者? [mq]从零开始实现 mq-03-引入 broker 中间人 [mq]从零 ...

  7. vs.net调试ArcGIS Engine代码查看变量时,提示“要检查本机对象,请启用本机代码调试。” 的解决方法

    用vs2017 调试 查看ArcGIS Engine 的变量时 会提示如下图所示的错误: 解决方法: 工具->选项->调试->常规->使用托管的兼容模式 如下图所示: 2.设置 ...

  8. 设置VisualStudio以管理员身份运行

    以vs2013为例 vs右键属性 ----- 找到目标位置如下 "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\ID ...

  9. 929. Unique Email Address - LeetCode

    Question 929. Unique Email Address Solution 题目大意: 给你一个邮箱地址的数组,求出有多少个不同的地址,其中localName有如下规则 加号(+)后面的字 ...

  10. 103_Power Pivot 透视表中空白标签处理及百分比

    焦棚子的文章目录 请点击下载附件 1.案例来源于不断变化的需求 事实表:销售表 维度表:城市表 销售表和城市建立多对一的关系 如图1: 图1 2.插入透视表 如图2: 图2 3.问题 1.销售表中,城 ...