XML学习笔记了解一下

XML学习笔记了解一下

前言:

json的出现 是用来替代XML的原因:

XML相比JSON最大的区别是充满了冗余信息。多数时候我们不需要冗余信息,

但是一旦需要的时候没有就是不行。这就是XML与JSON最大的区别。

为什么很多人反对使用XML,因为多数时候不需要冗余信息。

但是:

json的存在是典型的20%功能解决80%需求。

为什么不要xml?

因为里面80%的功能你不需要,等你需要的时候你就明白,这事只能xml干,json不行。

这是我所了解的 那请问还需要学XML吗?

也许毕业了工作了,遇到的项目是以前的 ,需要XML那怎么办?而且现在xml还不至于完全被替代,何来不学之说。

个人觉得还是有必要的,毕竟是基础,虽然是过时了的技术,但还是有必要掌握一下的,而且花费的时间也不多,大概4天。

贪多嚼不烂,但也别怕走弯路。 脚踏实地吧 骚年

开始学习XML啦学习一门新技术,我们得想三个问题:

XML是什么?

XML怎么使用?

XML运用场景?

先来解决第一个问题:XML是什么?XML 是可扩展标记语言其设计宗旨是传输数据,而非显示数据 其焦点是数据的内容

XML运用场景:

1. tomcat

2. struts Hibernate spring (三大框架)

3. 作为软件的配置文件

4. 作为数据的载体(存储数据,小型的“数据库”)

学习之前 我想大家都知道HTML,XHTML吧来区分以下三者:

XML:被设计用来传输和存储数据。

HTML 被设计用来显示数据。 设计用来显示数据,其焦点是数据的外观

XHTML:就是符合 XML标准的改进型 HTML

总结:HTML 旨在显示信息,而 XML 旨在传输信息。别搞错了

学习XML前最好对以下内容有基本的了解HTML / XHTMLJavaScript

重点:

XML标签没有被预定义。您需要自行定义标签。

XML 被设计为具有自我描述性。

XML 是没有行为,是不作为的。

意思就是 标签 你可以自己选择如何定义

而且 它只是一个数据并不能做任何事情

仅仅是包装 XML 标签中的纯粹的信息。

我们需要编写软件或者程序,才能传送、接收和显示出这个文档。

xml文件保存格式就是.xml

举个栗子:

codingCoge

didi

Hello

i think your are cool

都是自定义的

标签意义:能够读懂 XML 的应用程序可以有针对性地处理 XML 的标签。标签的功能性意义依赖于应用程序的特性。特点:XML 允许创作者定义自己的标签和自己的文档结构。重要:XML 是独立于软件和硬件的信息传输工具。XML特点:

XML 把数据从 HTML 分离通过使用几行 JavaScript,你就可以读取一个外部 XML 文件,然后更新 HTML 中的数据内容。

XML 纯文本格式存储让创建不同应用程序可以共享的数据变得更加容易

简化数据传输等等

XML 文档形成一种树结构 一定要有根节点

.....

不仅可以自定义标签 还可以自定义属性注意:

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

XML 文档必须有根元素 而且 一个xml文档中有且仅有一个根元素

XML 的属性值须加引号

XML 必须正确地嵌套

XML 标签对大小写敏感

XML 可以空标签

XML 标签中间不能有空格

XML 不能以数字开头 而下划线_可以

一个标签内可以有多个属性 ,但不可以有重复属性

XML 标签对大小写敏感。在 XML 中,标签 与标签 是不同的。

必须使用相同的大小写来编写打开标签和关闭标签。

转义字符

在 XML 中,一些字符拥有特殊的意义。对于一些单个字符,若想显示其原始样式,也可以使用转义的形式予以处理。如"<"要用<来代替 "<" 字符对这些特殊字符进行转义。转义之后的字符就叫转义字节。实体引用:

< < 小于

> > 大于

& & 和号

' ' 单引号

" " 引号

XML 中的注释

在 XML 中,空格会被保留HTML 会把多个连续的空格字符裁减(合并)为一个:

HTML: Hello my name is David.

输出: Hello my name is David.

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

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

名称不能以数字或者标点符号开始

名称不能以字符 “xml”(或者 XML、Xml)开始

名称不能包含空格

可使用任何名称,没有保留的字词。

XML 元素是可扩展的你可以随时修改里面的内容 可以添加了一些额外的信息可以经常在不中断应用程序的情况进行扩展,而不报错

XML 属性属性通常提供不属于数据组成部分的信息。在下面的例子中,文件类型与数据无关,但是对需要处理这个元素的软件来说却很重要

computer.gif

注意:XML 属性必须加引号属性值必须被引号包围,不过单引号和双引号均可使用。

注释:如果属性值本身包含双引号,那么有必要使用单引号包围它也可以使用使用实体引用

XML 元素 vs. 属性请看这些例子:

Anna

Smith

female

Anna

Smith

在第一个例子中,sex 是一个属性。在第二个例子中,sex 则是一个子元素。两个例子均可提供相同的信息。

那如何选择使用子元素还是属性呢?在 HTML 中,属性用起来很便利,但是在 XML 中,您应该尽量避免使用属性。如果信息感觉起来很像数据,那就使用子元素

随便看个栗子:

08

08

2008

George

John

Reminder

Don't forget the meeting!

因使用属性而引起的一些问题:

属性无法包含多重的值(元素可以)属性无法描述树结构(元素可以)属性不易扩展(为未来的变化)属性难以阅读和维护请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。

总结:元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。

避免:

to="George" from="John" heading="Reminder"

body="Don't forget the meeting!">

ID 仅仅是一个标识符,用于标识不同的便签。它并不是便签数据的组成部分。

George

John

Reminder

Don't forget the meeting!

xml乱码问题: 得保持编码格式一样 比如 电脑文件文本编码过程默认是GBK格式 而浏览器是解析器,解码过程默认是utf-8格式 只要编码格式一致就行 有两个方法:

1. 修改编码格式 ,保存以utf-8的格式即可

2. 文档声明:

version="1.0"表示版本号 encoding="utf-8"表示解码格式记住是写在xml上面

最好用utf-8 还有 编写xml最好使用工具 不要使用记事本 ,因为工具 保存的时候会自动转换成你的encoding格式 不存在乱码问题 所有 XML 文档中的文本均会被解析器解析。

CDATA块

只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。里面的内容原样输出CDATA 部分由 "" 开始,由 "" 结束:

举一个栗子:

效果图:

还有处理指令

处理指令必须以“”作为结尾,XML声明语句就是最常见的一种处理指令。

作用是 告诉xml解析式如何解析xml文档的

比如告诉xml文档应用哪些css文件

但是现在根本用不到 所以 这些样式显示交给html就行 xml还是老老实实负责数据内容

XML解析

使用程序读取xml文件的内容。这叫做xml解析

XML解析方式(原理不同)分为两种

1. DOM 解析

2. SAX解析

XML解析工具

DOM解析原理:

1)JAXP (oracle-Sun公司官方)

2)JDOM工具(非官方)

3)Dom4J工具(非官方)

三大框架(默认读取xml的工具就是Dom4j)

.......

SAX解析原理:

1)Sax解析工具(oracle-sun公司官方)

什么是DOM解析

DOM解析原理:xml解析器一次性把整个xml文档加载进内存,然后在内存中

构建一颗Document的对象树,通过Document对象,得到树上的节点对象,

通过节点对象访问(操作)到xml文档的内容。

可以看一下图片了解一下:(图片来自于黑马)

Dom4j工具(原理:DOM解析,非官方,不在JDK需要导包)现在最好用解析器所以 我也学的是这一个可以看我下一篇博客Dom4j工具--XML的DOM解析