XML的学习

zongmeijiezuishuai / 2023-08-08 / 原文

XML的定义

XML是指可扩展标记语言(eXtensible Markup Language)。 被设计用来传输和存储数据,不用于表现和展示数据,其焦点是数据的内容。而HTML 则用来表现数据,其焦点是数据的外观。
HTML旨在显示内容,XML旨在传输信息。

XML的实例

例一
 <?xml version="1.0" encoding="UTF-8"?>
<site>
  <name>RUNOOB</name>
  <url>https://www.runoob.com</url>
  <logo>runoob-logo.png</logo>
  <desc>编程学习网站</desc>
</site>
XML文档第一行以XML声明开始,用来表述文档的一些信息
以上面为例,site为父节点,而name,url,logo,desc,为子节点,他们也分别为标签,标签内包含了要传递的信息。且标签必须成对出现,有开始标签就需要要结束标签,例如:开始标签为<name>,结束标签为 </name>

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>
实例中的根元素是 <bookstore>(根节点)。文档中的所有 <book>(父节点) 元素都被包含在 <bookstore> 中。<book> 元素有 4 个子元素(子节点):<title>、<author>、<year>、<price>。

XML的语法规则

1.XML文档必须有根元素

在例二中,bookstore就是根元素

2.XML声明

在例一中,第一行就是XML声明

3.所有XML元素都必须有一个关闭的标签

即在以上的例子中所有元素后面都必须带上关闭标签(结束标签)

4.XML标签对大小写敏感

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

5.XML必须正确嵌套

<b><i>This text is bold and italic</i></b>
在上面的实例中,正确嵌套的意思是:由于 <i> 元素是在 <b> 元素内打开的,那么它必须在 <b> 元素内关闭。

6.XML属性必须加引号

<note date="12/11/2007">
<to>Tove</to>
<from>Jani</from>
</note>
note元素中date属性加上了引号

一个元素可以有多个属性,他的基本格式为:

<元素名 属性名1="属性值1" 属性名2="属性值2">

7.实体引用
"<"在解析器中会把它当作新元素的开始,这样会产生XML错误,为避免错误产生,就会有实体引用来代替"<"。例如:

<message>if salary &lt; 1000 then</message>

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

注:在 XML 中,只有字符 "<" 和 "&" 确实是非法的。大于号是合法的。

8.XML中的注释

<!-- This is a comment -->

9.在XML中空格会保留
10.XML以LF存储换行

在 Windows 应用程序中,换行通常以一对字符来存储:回车符(CR)和换行符(LF)。XML以LF存储换行。

XML元素

XML元素是指从开始标签直到结束标签的部分。一个元素可以包含其他元素、文本、属性、或者混合以上所有。

<bookstore>
    <book category="CHILDREN">
        <title>Harry Potter</title>
        <author>J K. Rowling</author>
        <year>2005</year>
        <price>29.99</price>
    </book>
    <book category="WEB">
        <title>Learning XML</title>
        <author>Erik T. Ray</author>
        <year>2003</year>
        <price>39.95</price>
    </book>
</bookstore>
在上面的实例中,<bookstore> 和 <book> 都有 元素内容,因为他们包含其他元素。<book> 元素也有属性(category="CHILDREN")。<title>、<author>、<year> 和 <price> 有文本内容,因为他们包含文本。

XML的命名规则

1.名称可以包含字母、数字以及其他的字符
2.名称不能以数字或者标点符号开始
3.名称不能以字母 xml(或者 XML、Xml 等等)开始
4.名称不能包含空格


最佳命名习惯

使名称具有描述性。使用下划线的名称也很不错:<first_name>、<last_name>。

名称应简短和简单,比如:<book_title>,而不是:<the_title_of_the_book>。

避免 "-" 字符。如果您按照这样的方式进行命名:"first-name",一些软件会认为您想要从 first 里边减去 name。

避免 "." 字符。如果您按照这样的方式进行命名:"first.name",一些软件会认为 "name" 是对象 "first" 的属性。

避免 ":" 字符。冒号会被转换为命名空间来使用(稍后介绍)。

XML 文档经常有一个对应的数据库,其中的字段会对应 XML 文档中的元素。有一个实用的经验,即使用数据库的命名规则来命名 XML 文档中的元素。

在 XML 中,éòá 等非英语字母是完全合法的,不过需要留意,您的软件供应商不支持这些字符时可能出现的问题。

XML的属性

在下面的实例中,文件类型与数据无关,但是对需要处理这个元素的软件来说却很重要:
<file type="gif">computer.gif</file>

XML属性必须加引号

属性值必须被引号包围,不过单引号和双引号均可使用

例如:
<person sex="female">
或者这样也可以:
<person sex='female'>
如果属性值本身包含双引号,您可以使用单引号,就像这个实例:
<gangster name='George "Shotgun" Ziegler'>
或者您可以使用字符实体:
<gangster name="George &quot;Shotgun&quot; Ziegler">

XML的元素于属性的区分

<note date="10/01/2008">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
在这个例子中,date是一个属性。

<note>
<date>10/01/2008</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
而在这个例子中,date是一个元素。

<note>
<date>
<day>10</day>
<month>01</month>
<year>2008</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
这个例子则扩展了date的元素。

注意:属性难以阅读和维护。请尽量使用元素来描述数据。而仅仅使用属性来提供与数据无关的信息。

针对元数据的XML属性

有时候会向元素分配 ID 引用。这些 ID 索引可用于标识 XML 元素,它起作用的方式与 HTML 中 id 属性是一样的。这个实例向我们演示了这种情况:

<messages>
<note id="501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>
上面的 id 属性仅仅是一个标识符,用于标识不同的便签。它并不是便签数据的组成部分。元数据(有关数据的数据)应当存储为属性,而数据本身应当存储为元素。(有点绕)
以上所有内容,是个人看菜鸟教程总结和搬运的,为的是我以后学习和使用XML时有一定的了解。