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 / XHTML
JavaScript

重点:

XML标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是没有行为,是不作为的。
意思就是  标签  你可以自己选择如何定义  
而且 它只是一个数据并不能做任何事情
仅仅是包装 XML 标签中的纯粹的信息。
我们需要编写软件或者程序,才能传送、接收和显示出这个文档。

xml文件保存格式就是.xml

举个栗子:

<note>
<to>codingCogeto>
<from>didifrom>
<heading>Helloheading>
<body>i think your are coolbody>
note>
都是自定义的

标签意义:
能够读懂 XML 的应用程序可以有针对性地处理 XML 的标签。标签的功能性意义依赖于应用程序的特性。
特点:XML 允许创作者定义自己的标签和自己的文档结构。
重要:XML 是独立于软件和硬件的信息传输工具。
XML特点:
1. XML 把数据从 HTML 分离
通过使用几行 JavaScript,你就可以读取一个外部 XML 文件,然后更新 HTML 中的数据内容。
2. XML 纯文本格式存储
让创建不同应用程序可以共享的数据变得更加容易
简化数据传输等等

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

<root>
  <child>
    <subchild>.....subchild>
  child>
root>

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

  所有 XML 元素都须有关闭标签
  XML 文档必须有根元素 而且   一个xml文档中有且仅有一个根元素
  XML 的属性值须加引号
  XML 必须正确地嵌套
  XML 标签对大小写敏感
  XML 可以空标签
  XML 标签中间不能有空格
  XML 不能以数字开头   而下划线_可以
  一个标签内可以有多个属性 ,但不可以有重复属性

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

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

转义字符

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

&lt;    <   小于
&gt;    >   大于
&   &   和号
'  '   单引号
"  "   引号

XML 中的注释

 

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

HTML:   Hello           my name is David.
输出: Hello my name is David.

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

名称可以含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字符 “xml”(或者 XMLXml)开始
名称不能包含空格
可使用任何名称,没有保留的字词。

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

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

computer.gif

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

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

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

<person sex="female">
  <firstname>Annafirstname>
  <lastname>Smithlastname>
person> 

<person>
  <sex>femalesex>
  <firstname>Annafirstname>
  <lastname>Smithlastname>
person> 

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

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

随便看个栗子:

<note>
<date>
  <day>08day>
  <month>08month>
  <year>2008year>
date>
<to>Georgeto>
<from>Johnfrom>
<heading>Reminderheading>
<body>Don't forget the meeting!body>
note>

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

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

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

避免:

day="08" month="08" year="2008"
to="George" from="John" heading="Reminder" 
body="Don't forget the meeting!">

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

 <note id="501">
    <to>Georgeto>
    <from>Johnfrom>
    <heading>Reminderheading>
    <body>Don't forget the meeting!body>
  note>

xml乱码问题:
XML学习笔记了解一下_第1张图片
得保持编码格式一样
比如 电脑文件文本编码过程默认是GBK格式
而浏览器是解析器,解码过程默认是utf-8格式
只要编码格式一致就行
有两个方法:

 1. 修改编码格式  ,保存以utf-8的格式即可
  2. 文档声明:

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

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

CDATA块

只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。里面的内容原样输出
CDATA 部分由 “

<body>
<script>
<sdf>哈哈</sdf>
script>
<script>
<sdf>哈哈sdf>
]]>
script>
body>

效果图:
XML学习笔记了解一下_第2张图片

还有处理指令

处理指令必须以“”作为结尾,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文档的内容。

可以看一下图片了解一下:(图片来自于黑马)
XML学习笔记了解一下_第3张图片

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

还需要了解的是XML的约束

XML约束要求:大家能够看懂约束内容,根据约束内容写出符合规则的xml文件。
XML约束技术

DTD约束:语法相对简单,功能也相对简单。学习成本也低。
Schema约束:语法相对复杂,功能也相对强大。学习成本高(名称空间)

具体的 参考W3school

提一嘴:
你们有没有遇到这种情况 ,xml文件在eclipse中打开是这种情况?
XML学习笔记了解一下_第4张图片

只要点击左下角的Source就可以了。重点内容

你可能感兴趣的:(网页前端,JAVA,Web基础)