XML学习笔记

来源:互联网 发布:旅行团乐队 知乎 编辑:程序博客网 时间:2024/05/24 02:08

http://www.w3school.com.cn/xml/index.asp

1. XML简介

       XML被设计用来传输和存储数据,其焦点是数据内容。HTML被设计用来显示数据,其焦点是数据的外观。即HTML旨在显示信息,而XML旨在传输信息

       XML仅仅是纯文本,通过XML发明自己的标签,XML不是对HTML的替代(XML是对HTML的补充)

XML不会替代HTML,理解这一点非常重要。大多数Web应用程序中,XML用于传输数据,而HTML用于格式化并显示数据。

       XML是独立于软件和硬件的信息传输工具。

2. XML用途

       XML把数据从HTML分离:动态修改数据内容

       XML简化数据共享:独立于软件和硬件的数据存储方法

       XML简化数据传输:不兼容系统之间交换数据

       XML简化平台变更:升级系统导致数据不兼容

       XML使数据更有用:XML独立于硬件、软件以及应用系统

3. XML树结构

       XML文档形成了一种树结构,从“根部”开始,然后扩展到“枝叶”。

       XML使用简单的具有自我描述的语法:

       <?xmlversion="1.0" encoding="ISO-8859-1"?>

       <note>

              <to>George</to>

              <from>John</from>

              <heading>Reminder</heading>

              <body>Don't forgetthe meeting!</body>

       </note>

       第一行是XML声明,定义了XML的版本和所使用的编码

       下一行描述文档的根元素 <note>

       接下来4行描述根的四个字元素(to,from,heading以及body)

       最后一行是定义根元素的结尾:</note>

 

XML形成一种树结构:

       XML必须包含根元素,该元素是其他元素的父元素

       XML文档形成了一棵文档树,从根部开始,扩展到树的最底端。      

       <root>

              <child>

                     <subchild>… </subchild>

              </child>

       </root>

       父、子以及同胞等属于用于描述元素之间的关系。父元素拥有字元素,相同层级上的子元素成为同胞,所有元素均可拥有文本内容和属性。

              

<bookstore>

       <book category="COOKING">

              <titlelang="en">Everyday Italian</title>

              <author>GiadaDe Laurentiis</author>

              <year>2005</year>

              <price>30.00</price>

       </book>

       <bookcategory="CHILDREN">

              <titlelang="en">Harry Potter</title>

              <author>JK. Rowling</author>

              <year>2005</year>

              <price>29.99</price>

       </book>

       <bookcategory="WEB">

              <titlelang="en">Learning XML</title>

              <author>ErikT. Ray</author>

              <year>2003</year>

              <price>39.95</price>

       </book>

</bookstore>

 

4. XML语法

       XML的语法规则很简单,且很有逻辑。这些规则很容易学习,也容易使用。 

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

       HTML有不闭合标签:<p>This is a paragraph

       XML中省略关闭标签是非法的,所有元素都需要有关闭标签

       <p>Thisis a paragraph</p> 

XML标签大小写敏感:

       XML元素使用XML标签进行定义。XML标签对大小写敏感,即对于标签<Letter>与<letter>是不同的。必须使用相同的大小写来编写打开标签和关闭标签。

       <Message>这是错误的</message>

       <message>这是正确的</message>

       打开标签和关闭标签又被称为开始标签和结束标签。      

XML必须正确地嵌套:

       HTML可以有不正确嵌套的元素:

       <b><i>Thistext is bold and italic</b></i>

       在XML中,所有元素都必须彼此正确嵌套:  <b><i>This textis bold and italic</i></b>,也即<i>元素是在<b>元素内打开的,那必须在<b>元素内关闭。 

XML文档必须有根元素:

       XML文档必须有一个元素是其他所有元素父元素 

XML的属性值须加引号:

       与HTML类似,XML也可以拥有属性(名称/值的对),在XML中XML的属性值需要加引号。

       <note date=08/08/2008>

       <to>George</to>

       <from>John</from>

       </note>      

       <notedate=” 08/08/2008” >

       <to>George</to>

       <from>John</from>

       </note>

       第一个文档中是错误的,note元素的date属性要加引号。 

实体引用:

       XML中,一些字符拥有特殊意义。“<”如果放在XML元素中,会发生错误,解析器会将“<”解析为新的元素的开始。

       因此<message>if salary < 1000then </message> 是错误的,为了避免这种错误,使用实体引用来替代“<”字符:

       <message>ifsalary &lt; 1000 then </message>

       XML有5个预定义的实体引用:

       &lt;                <            小于

       &gt;               >            大于

       &amp;           &           和号

       &apos;           ‘             单引号

       &quot;           “             双引号

       XML中只有字符 “<”和”&”是非法的,其他的则是一个好的习惯的体现。 

XML中的注释:

       XML中的编写注释的语法与HTML的语法很相似:

       <!--This is a comment --> 

XML中空格会被保留:

       HTML会把多个连续空格字符裁剪为一个:

       HTML: Hello              my name is David.

       输出:  Hello my name is David.

       在XML中,文档中的空格不会被删除。      

XML以LF存储换行:

       Windows应用程序中,通常以一对字符来存储:回车符(CR)和换行符(LF)。这对字符与打字机设置新行的动作有相似之处。Unix中新行以LF字符存储。

 

5. XML元素

       XML元素指从(且包括)开始标签直到(且包括)结束标签的部分。

       元素可包含其他元素,文本或两者的混合物。元素可以拥有属性。

       <bookstore>

       <bookcategory="CHILDREN">

              <title>HarryPotter</title>

              <author>JK. Rowling</author>

              <year>2005</year>

              <price>29.99</price>

       </book>

       <bookcategory="WEB">

              <title>LearningXML</title>

              <author>ErikT. Ray</author>

              <year>2003</year>

              <price>39.95</price>

       </book>

</bookstore>

上例中,<bookstore>和<book>都拥有元素内容,他们都包含了元素,而<author>只有文本内容。<book>元素拥有属性(category=”CHILDREN”)

 

XML命名规则:1. 名称可以含有字母,数字以及其他字符。2.名字不能以数字或者标点符号开始。3.名称不能以字符xml或XML,或Xml开始。3名称不能包含空格

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

       最佳的命名习惯:名称要简短,要避免使用”-”,”.”以及”:”等符号,

      

       XML元素是可扩展的:对于如下的XML的例子,创建应用程序可以将to,from以及body等元素的内容提取出来:

       <note>

              <to>George</to>

              <from>John</from>

              <body>Don't forgetthe meeting!</body>

       </note>

       提取的内容可能如下:

       MESSAGE

       To: George

       From: John

       Don't forget the meeting!


       如果将上述文件扩展为如下的形式,那么我们的应用程序仍然可以从其中抽取出原本的信息,而不会出现错误。

       <note>

              <date>2008-08-08</date>

              <to>George</to>

              <from>John</from>

              <heading>Reminder</heading>

              <body>Don't forgetthe meeting!</body>

       </note>

 

6.XML属性

       XML元素可以在开始标签中包含属性,类似HTML,属性提供了关于元素的额外附加的信息。

       HTML中 <img src=”computer.gif”>,src属性提供有关<img>元素的额外信息。在HTML中,属性提供了有关元素的额外信息。

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

       <filetype=”gif”> computer.gif</file>

       XML属性必须加引号,单引号和双引号均可使用,例如person属性:

       <personsex=”femal”> 或者可以写作:     <person sex=’ femal’ >

      

       如下的例子中,sex可以是属性,也可以是元素,提供了相同的信息量。何时使用属性,何时使用元素没有规则,但是XML中应尽量避免使用属性。

<person sex="female">

       <firstname>Anna</firstname>

       <lastname>Smith</lastname>

</person>

 

<person>

       <sex>female</sex>

       <firstname>Anna</firstname>

       <lastname>Smith</lastname>

</person>

 

       使用属性会引起一些问题:属性无法包含多重的值,属性无法描述树结构,属性不易扩展以及属性难以阅读和维护。

       针对元数据的XML属性,有时候向元素分配ID引用,这些ID索引用于标识XML元素,起的作用与HTML中ID属性是一样的,

<messages>

 <note id="501">

   <to>George</to>

   <from>John</from>

   <heading>Reminder</heading>

   <body>Don't forget the meeting!</body>

 </note>

 <note id="502">

   <to>John</to>

   <from>George</from>

   <heading>Re: Reminder</heading>

   <body>I will not</body>

 </note>

</messages>

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

 

 

0 0