XML相关知识 详细

XML 基础知识(参考w3school)

1、什么是XML(Extensible Markup Language)可扩展标记语言? 初次识别

(1)官方的一些说法

  • XML 指可扩展标记语言(EXtensible Markup Language)
  • XML 是一种标记语言,很类似 HTML
  • XML 的设计宗旨是传输数据,而非显示数据
    (XML 的设计初衷就是对于将数据结构化,存储以及传输数据)
  • XML 标签没有被预定义。您需要自行定义标签。
  • XML 被设计为具有自我描述性。
  • XML 是 W3C 的推荐标准

(2)XML 仅仅是纯文本

  • XML 没什么特别的。它仅仅是纯文本而已。有能力处理纯文本的软件都可以处理 XML;
  • 能够读懂 XML 的应用程序可以有针对性地处理 XML 的标签。标签的功能性意义依赖于应用程序的特性。
  • 允许作者制定自己的标签,不像 html 中只有预定义的标签

(3)XML 是独立于软件和硬件之间的一种传输工具而已;

  • XML 无所不在。XML 是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。

2、怎么理解可扩展标记语言(XML)?

(1)可扩展性方面:HTML不允许用户自行定义他们自己的标识或属性,而在XML中,用户能够根据需要自行定义新的标识及属性名,以便更好地从语义上修饰数据。 (自定义标签的优势,方便阅读以及数据处理)
(2)标记语言:有自身的标签,各种各样的标签方便了数据的存储,识别,比如在HTML 中

这就是标记,有头有尾;

3、XML 的用途

(1)XML 应用于 web 开发的许多方面,常用于简化数据的存储和共享。

(2)XML 把数据从 HTML 分离:

  • 如果在 HTML 文档中显示动态数据,那么每当数据改变时将花费大量的时间来编辑 HTML;
  • 通过 XML,数据能够存储在独立的 XML 文件中。这样你就可以专注于使用 HTML 进行布局和显示,并确保修改底层数据不再需要对 HTML 进行任何的改变;
  • 通过使用几行 JavaScript,你就可以读取一个外部 XML 文件,然后更新 HTML 中的数据内容;

(3)XML 简化数据共享

  • 在真实的世界中,计算机系统和数据使用不兼容的格式来存储数据;
  • XML 数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法;
  • 这让创建不同应用程序可以共享的数据变得更加容易;

(4)XML 简化数据传输

  • 通过 XML,可以在不兼容的系统之间轻松地交换数据;
  • 对开发人员来说,其中一项最费时的挑战一直是在因特网上的不兼容系统之间交换数据;
  • 由于可以通过各种不兼容的应用程序来读取数据,以 XML 交换数据降低了这种复杂性。

(5)XML 简化平台的变更

  • 升级到新的系统(硬件或软件平台),总是非常费时的。必须转换大量的数据,不兼容的数据经常会丢失;
  • XML 数据以文本格式存储。这使得 XML 在不损失数据的情况下,更容易扩展或升级到新的操作系统、新应用程序或新的浏览器;

(6)XML 使您的数据更有用

  • 由于 XML 独立于硬件、软件以及应用程序,XML 使您的数据更可用,也更有用;
  • 不同的应用程序都能够访问您的数据,不仅仅在 HTML 页中,也可以从 XML 数据源中进行访问;
  • 通过 XML可供各种阅读设备使用(手持的计算机、语音设备、新闻阅读器等),还可以供盲人或其他残障人士使用。

4、XML 规范 以及规则

(1)XML 文档必须包含根元素。该元素是所有其他元素的父元素;
(2)XML 文档中的元素形成了一棵文档树。这棵树从根部开始,并扩展到树的最底端;
(3)所有元素均可拥有子元素;
(4)所有元素均可拥有文本内容和属性(类似 HTML 中);

XML 示例:
在这里插入图片描述
上图表示下面的 XML 中的一本书:

<bookstore>
<book category="COOKING">
  <title lang="en">Everyday Italian</title> 
  <author>Giada De Laurentiis</author> 
  <year>2005</year> 
  <price>30.00</price> 
</book>
<book category="CHILDREN">
  <title lang="en">Harry Potter</title> 
  <author>J K. Rowling</author> 
  <year>2005</year> 
  <price>29.99</price> 
</book>
<book category="WEB">
  <title lang="en">Learning XML</title> 
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
</book>
</bookstore>

例子中的根元素是 ;
文档中的所有 元素都被包含在 中;
元素有 4 个子元素:、< author>、、;

上述的例子完整的显示了 XML 的存储数据的方式以及形式

4.1 XML 语法规则

(1)所有 XML 元素都须有关闭标签
(2)XML 标签对大小写敏感

(3)XML 必须正确地嵌套

<b><i>This text is bold and italic</b></i>
在 XML 中,所有元素都必须彼此正确地嵌套:
<b><i>This text is bold and italic</i></b>
在上例中,正确嵌套的意思是:由于 <i> 元素是在 <b> 元素内打开的,那么它必须在 <b> 元素内关闭;

(4)XML 文档必须有根元素
(5)XML 的属性值须加引号

<note date=08/08/2008>
<to>George</to>
<from>John</from>
</note> 
<note date="08/08/2008">
<to>George</to>
<from>John</from>
</note> 
<!--在第一个文档中的错误是,note 元素中的 date 属性没有加引号;这是注释的写法-->

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

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

4.2 元素

什么是 XML 元素?
XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分
(一个标签的开始和结束就是里面的一个元素)
元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。

元素具有好的扩展性,例子如下所示:

<note>
<to>George</to>
<from>John</from>
<body>Don't forget the meeting!</body>
</note> 

让我们设想一下,我们创建了一个应用程序,可将 、 以及 元素提取出来,并产生以下的输出:

MESSAGE
To: George
From: John

Don't forget the meeting!

想象一下,之后这个 XML 文档作者又向这个文档添加了一些额外的信息:

<note>
<date>2008-08-08</date>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
<!--那么这个应用程序会中断或崩溃吗?不会。这个应用程序仍然可以找到 XML 文档中的 <to>、<from> 以及 <body> 元素,并产生同样的输出。XML 的优势之一,就是可以经常在不中断应用程序的情况进行扩展-->

4.3 属性

XML 元素可以在开始标签中包含属性,类似 HTML;
属性使用双引号包裹起开,单引号也可以;
属性 (Attribute) 提供关于元素的额外(附加)信息;
请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息;
传递的理念是:元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素;

<!--不要做这样的蠢事(这不是 XML 应该被使用的方式):-->

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

4.4 验证(对于XML 的语法的验证)

拥有正确语法的 XML 被称为“形式良好”的 XML;
通过 DTD 验证的 XML 是“合法”的 XML;
良好的 XML 语句需要有下面的特点:

 <?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note SYSTEM "Note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>  

version='1.0' 表示此xml的版本是1.0 encoding=‘ISO-8859-1’指的是 编码格式是ISO-8859-1
这个值随着你的需要而更改 可以是“UTF-8” 也可以是GB2312 

在上例中,DOCTYPE 声明是对外部 DTD 文件的引用。下面的段落展示了这个文件的内容;

4.4.1 XML DTD 的作用

DTD 的作用是定义 XML 文档的结构。它使用一系列合法的元素来定义文档结构:
下面的 就是“Note.dtd”文档中的内容

<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]> 

展开成如下形式或许结构更明显一些:
<!DOCTYPE note 
[
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]
> 


PCDATA
PCDATA 的意思是被解析的字符数据(parsed character data)。可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。文本中的标签会被当作标记来处理,而实体会被展开。不过,被解析的字符数据不应当包含任何 & < > 字符;需要使用 &amp; &lt; &gt; 实体来分别替换它们。

CDATA
CDATA 的意思是字符数据(character data)。CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。
几个实体引用字符:
&lt; <
&gt; >
&amp; &
&quot; "
&apos; '

4.5 关于 XML 的查看

  • 打开 XML 文件 - XML 文档将显示为代码颜色化的根以及子元素。通过点击元素左侧的加号或减号,可以展开或收起元素的结构;
  • 在 Netscape, Opera 以及 Safari 中,仅仅会显示元素文本!要查看原始的 XML,请右击页面,然后选择“查看源代码”;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值