搜尋
首頁後端開發XML/RSS教程XML—XML介紹與基本語法

XML—XML介紹與基本語法

Feb 24, 2017 pm 02:53 PM

1.XML歷史

#gml(1969)->sgml(1985)->html(1993)- >xml(1998)

  • 1969 gml(通用標記語言),主要目的是要在不同的機器之間進行通訊的資料規格

  • 1985 sgml(標準通用標記語言)

  • 1993 html(超文本標記語言,www網)

html語言本身就是有一些缺陷的
 (1)不能自訂標籤
 (2)html本身缺乏意義
 (3)html沒有真正的國際化

有一個中間過渡語言,xhtml:
html->xhtml->xml

  • 1998 xml extensiable markup language 擴充標記語言

#2.為什麼需要XML

1.需求1
兩個程式間進行資料通訊?
2.需求2
給一台伺服器,做一個設定文件,當伺服器程式啟動時,去讀取它應當監聽的連接埠號,還有連接資料庫的使用者名稱和密碼?

在XML語言中,它允許使用者自訂標籤。一個標籤用來描述一段數據;一個標籤可以分為開始標籤和結束標籤,在開始標籤和結束標籤之間,又可以使用其他標籤來描述其他數據,以此來實現數據關係的描述。

3.XML常見應用

1.XML的出現解決了程式間資料傳輸的問題:
例如QQ之間的資料傳送,用XML格式來傳送數據,具有良好的可讀性,可維護性

2.XML可以做設定檔
XML檔案做設定檔可以說非常普遍,例如我們的Tomcat伺服器的server.xml ,web.xml。再來例如我們的structs中的structs-config.xml文件,和hibernate的hibernate.cfg.xml等等。

3.XML可以充當小型的資料庫
XML檔案可以做小型資料庫,也是不錯的選擇,我們程式中可能用到一些經常要人工配置的數據,如果放在資料庫中讀取不合適(因為這會增加維護資料庫的工作),則可以考慮直接用XML來做小型資料庫。這種方式直接讀取檔案顯然要比讀資料庫快。例如msn中保存用戶聊天記錄就是用XML檔。

入門案例:用XML記錄一個班級資訊。

<?xml version="1.0" encoding="gb2312"?><class>
    <stu id="001">
        <name>杨过</name> 
        <sex>男</sex>
        <age>20</age>
    </stu>  
    <stu id="002">
        <name>小龙女</name>    
        <sex>女</sex>
        <age>21</age>
    </stu></class>

我們可以用瀏覽器開啟:

XML—XML介紹與基本語法

那麼我們的XML能不能像html一樣顯示在網頁上呢?也是可以的,它也可以用css來修飾,但我們不用,我們只需要使用XML來儲存資料。

在這個例子中,如果我們把第一行的編碼改為utf-8,再用瀏覽器打開會報錯,這是為什麼呢?

因為xml檔案的預設編碼是ANSI,也就是美國國家標準協會制定的編碼,它根據不同的國家和地區制定了不同的標準,那麼在中國就是GB2312,所以我們用GB2312編碼不會出錯,而用UTF-8會報錯。

解決方法就是將該XML檔案更改為UTF-8的編碼模式即可。

4.XML語法

一個XML檔案分為以下幾部分內容:
1. 文檔宣告
2.元素
3.屬性
4.註解
5.CDATA區、特殊字元
6.處理指令(processing instruction)

4.1.XML語法-文件宣告

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>

XML宣告放在XML文件的第一行
XML宣告由以下幾個部分組成:

version –文件符合XML1.0規範,我們學習1.0
 encoding –文檔字元編碼,例如”GB2312”或”UTF-8”
 standalone –文件定義是否獨立使用
 standalone=”no”為預設值。 yes代表是獨立使用,而no代表不是獨立使用

4.2.XML語法-元素(或稱為標記、節點)

( 1)每個XML文件必須有且只有一個根元素

  • 根元素是一個完全包含文件中其他所有元素的元素

  • 根元素的起始標記要放在所有其他元素的起始標記之前

  • #跟元素的結束標記要放在所有其他元素的結束標記之後

(2)XML元素指的是XML檔案中出現的標籤,一個標籤分為開始標籤和結束標籤,一個標籤有以下幾種書寫方式,例如

  • 包含標籤體:

#
<a>www.sohu.com</a>
  • 不含標籤體的:

<a></a>,简写为:<a/>

(3)一個標籤中也可以嵌套若干子標籤。但所有標籤必須合理地嵌套,絕對不允許交叉嵌套,例如

<a>welcome to <b> www.sohu.com </a></b>

這種情況肯定是要報錯的。

(4)对于XML标签中出现的所有空格和换行,XML解析程序都会当做标签内容进行处理。例如下面两段内容的意义是不一样的。

<stu>xiaoming</stu>

和如下:

<stu>
    xiaoming</stu>

(5)由于在XML中,空格和换行都作为原始内容被处理,所以,在编写XML文件时,要特别注意。

(6)命名规范:一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守以下规范:

  • 区分大小写,例如,元素P和元素p是两个不同的元素

  • 不能以数字或下划线”_”开头

  • 元素内不能包含空格

  • 名称中间不能包含冒号(:)

  • 可以使用中文,但一般不这么用

4.3.XML语法-属性

<student id="100">
    <name>Tom</name></student>

(1)属性值用双引号(”)或单引号(’)分隔,如果属性值中有单引号,则用双引号分隔;如果有双引号,则用单引号分隔。那么如果属性值中既有单引号还有双引号怎么办?这种要使用实体(转义字符,类似于html中的空格符),XML有5个预定义的实体字符,如下:

XML—XML介紹與基本語法

(2)一个元素可以有多个属性,它的基本格式为:

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

(3)特定的属性名称在同一个元素标记中只能出现一次
 (4)属性值不能包括,&,如果一定要包含,也要使用实体

4.4.XML语法-注释

XML的注释类似于HTML中的注释:

<!--这是一个注释-->

(1)注释内容不要出现--
 (2)不要把注释放在标记中间;
 (3)注释不能嵌套
 (4)可以在除标记以外的任何地方放注释

4.5.XML语法-CDATA节

假如有这么一个需求,需要通过XML文件传递一幅图片,怎么做呢?其实我们看到的电脑上的所有文件,本质上都是字符串,不过它们都是特殊的二进制字符串。我们可以通过XML文件将一幅图片的二进制字符串传递过去,然后再解析成一幅图片。那么这个字符串就会包含大量的,&或者“等一些特殊的不合法的字符。这时候解析引擎是会报错的。

所以,有些内容可能不想让解析引擎解析执行,而是当做原始内容处理,用于把整段文本解释为纯字符数据而不是标记。这就要用到CDATA节。

语法如下:

<![CDATA[
    ......
]]>

CDATA节中可以输入任意字符(除]]>外),但是不能嵌套!

如下例,这种情况它不会报错,而如果不包含在CDATA节中,就会报错:

<stu id="001">
    <name>杨过</name> 
    <sex>男</sex>
    <age>20</age>
    <intro><![CDATA[ad<<&$^#*k]]></intro></stu>

4.6.XML语法-处理指令

处理指令,简称PI(processing instruction)。处理指令用来指示解析引擎如何解析XML文件,看下面一个例子:

比如我们也可以使用css样式表来修饰XML文件,编写my.css如下:

name{    
font-size:80px;    
font-weight:bold;    
color:red;
}
sex{    
font-size:60px;    
font-weight:bold;    
color:blue;
}
sex{    
font-size:40px;    
font-weight:bold;    
color:green;
}

我们在xml文件中使用处理指令引入这个css文件,如下:

<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet href="my.css" type="text/css"?><class>
    <stu id="001">
        <name>杨过</name> 
        <sex>男</sex>
        <age>20</age>
    </stu>  
    <stu id="002">
        <name>小龙女</name>    
        <sex>女</sex>
        <age>21</age>
    </stu></class>

这时候我们再用浏览器打开这个xml文件,会发现浏览器解析出一个带样式的视图,而不再是单纯的目录树了:

XML—XML介紹與基本語法

但是XML的处理指令不要求掌握,因为用到的很少。

5.格式正规的XML文档-小结

语法规范

1.XML声明语句
2.必须有一个根元素
3.标记大小写敏感
4.属性值用引号
5.标记成对
6.空标记关闭
7.元素正确嵌套

1.XML历史

gml(1969)->sgml(1985)->html(1993)->xml(1998)

  • 1969 gml(通用标记语言),主要目的是要在不同的机器之间进行通信的数据规范

  • 1985 sgml(标准通用标记语言)

  • 1993 html(超文本标记语言,www网)

html语言本身是有一些缺陷的
 (1)不能自定义标签
 (2)html本身缺少含义
 (3)html没有真正的国际化

有一个中间过渡语言,xhtml:
 html->xhtml->xml

  • 1998 xml extensiable markup language 可扩展标记语言

2.為什麼需要XML

1.需求1
兩個程式間進行資料通訊?
2.需求2
給一台伺服器,做一個設定文件,當伺服器程式啟動時,去讀取它應當監聽的連接埠號,還有連接資料庫的使用者名稱和密碼?

在XML語言中,它允許使用者自訂標籤。一個標籤用來描述一段數據;一個標籤可以分為開始標籤和結束標籤,在開始標籤和結束標籤之間,又可以使用其他標籤來描述其他數據,以此來實現數據關係的描述。

3.XML常見應用

1.XML的出現解決了程式間資料傳輸的問題:
例如QQ之間的資料傳送,用XML格式來傳送數據,具有良好的可讀性,可維護性

2.XML可以做設定檔
XML檔案做設定檔可以說非常普遍,例如我們的Tomcat伺服器的server.xml ,web.xml。再來例如我們的structs中的structs-config.xml文件,和hibernate的hibernate.cfg.xml等等。

3.XML可以充當小型的資料庫
XML檔案可以做小型資料庫,也是不錯的選擇,我們程式中可能用到一些經常要人工配置的數據,如果放在資料庫中讀取不合適(因為這會增加維護資料庫的工作),則可以考慮直接用XML來做小型資料庫。這種方式直接讀取檔案顯然要比讀資料庫快。例如msn中保存用戶聊天記錄就是用XML檔。

入門案例:用XML記錄一個班級資訊。

<?xml version="1.0" encoding="gb2312"?><class>
    <stu id="001">
        <name>杨过</name> 
        <sex>男</sex>
        <age>20</age>
    </stu>  
    <stu id="002">
        <name>小龙女</name>    
        <sex>女</sex>
        <age>21</age>
    </stu></class>

我們可以用瀏覽器開啟:

XML—XML介紹與基本語法

那麼我們的XML能不能像html一樣顯示在網頁上呢?也是可以的,它也可以用css來修飾,但我們不用,我們只需要使用XML來儲存資料。

在這個例子中,如果我們把第一行的編碼改為utf-8,再用瀏覽器打開會報錯,這是為什麼呢?

因為xml檔案的預設編碼是ANSI,也就是美國國家標準協會制定的編碼,它根據不同的國家和地區制定了不同的標準,那麼在中國就是GB2312,所以我們用GB2312編碼不會出錯,而用UTF-8會報錯。

解決方法就是將該XML檔案更改為UTF-8的編碼模式即可。

4.XML語法

一個XML檔案分為以下幾部分內容:
1. 文檔宣告
2.元素
3.屬性
4.註解
5.CDATA區、特殊字元
6.處理指令(processing instruction)

4.1.XML語法-文件宣告

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>

XML宣告放在XML文件的第一行
XML宣告由以下幾個部分組成:

version –文件符合XML1.0規範,我們學習1.0
 encoding –文檔字元編碼,例如”GB2312”或”UTF-8”
 standalone –文件定義是否獨立使用
 standalone=”no”為預設值。 yes代表是獨立使用,而no代表不是獨立使用

4.2.XML語法-元素(或稱為標記、節點)

( 1)每個XML文件必須有且只有一個根元素

  • 根元素是一個完全包含文件中其他所有元素的元素

  • 根元素的起始標記要放在所有其他元素的起始標記之前

  • #跟元素的結束標記要放在所有其他元素的結束標記之後

(2)XML元素指的是XML檔案中出現的標籤,一個標籤分為開始標籤和結束標籤,一個標籤有以下幾種書寫方式,例如

  • 包含標籤體:

#
<a>www.sohu.com</a>
  • 不含標籤體的:

<a></a>,简写为:<a/>

(3)一個標籤中也可以嵌套若干子標籤。但所有標籤必須合理地嵌套,絕對不允許交叉嵌套,例如

<a>welcome to <b> www.sohu.com </a></b>

這種情況肯定是要報錯的。

(4)對於XML標籤中出現的所有空格和換行,XML解析程式都會當作標籤內容來處理。例如下面兩段內容的意義是不一樣的

<stu>xiaoming</stu>

和如下:

<stu>
    xiaoming</stu>

(5)由於在XML中,空格和換行都被當作原始內容被處理,所以,在寫XML檔時,要特別注意。

(6)命名規範:一個XML元素可以包含字母、數字以及其它一些可見字符,但必須遵守以下規範:

  • 區分大小寫,例如,元素P和元素p是兩個不同的元素

  • 不能以數字或底線”_”開頭

  • 元素內不能包含空格

  • 名稱中間不能包含冒號(:)

  • #可以使用中文,但一般不這麼用

4.3.XML语法-属性

<student id="100">
    <name>Tom</name></student>

(1)属性值用双引号(”)或单引号(’)分隔,如果属性值中有单引号,则用双引号分隔;如果有双引号,则用单引号分隔。那么如果属性值中既有单引号还有双引号怎么办?这种要使用实体(转义字符,类似于html中的空格符),XML有5个预定义的实体字符,如下:

XML—XML介紹與基本語法

(2)一个元素可以有多个属性,它的基本格式为:

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

(3)特定的属性名称在同一个元素标记中只能出现一次
 (4)属性值不能包括,&,如果一定要包含,也要使用实体

4.4.XML语法-注释

XML的注释类似于HTML中的注释:

<!--这是一个注释-->

(1)注释内容不要出现--
 (2)不要把注释放在标记中间;
 (3)注释不能嵌套
 (4)可以在除标记以外的任何地方放注释

4.5.XML语法-CDATA节

假如有这么一个需求,需要通过XML文件传递一幅图片,怎么做呢?其实我们看到的电脑上的所有文件,本质上都是字符串,不过它们都是特殊的二进制字符串。我们可以通过XML文件将一幅图片的二进制字符串传递过去,然后再解析成一幅图片。那么这个字符串就会包含大量的,&或者“等一些特殊的不合法的字符。这时候解析引擎是会报错的。

所以,有些内容可能不想让解析引擎解析执行,而是当做原始内容处理,用于把整段文本解释为纯字符数据而不是标记。这就要用到CDATA节。

语法如下:

<![CDATA[
    ......
]]>

CDATA节中可以输入任意字符(除]]>外),但是不能嵌套!

如下例,这种情况它不会报错,而如果不包含在CDATA节中,就会报错:

<stu id="001">
    <name>杨过</name> 
    <sex>男</sex>
    <age>20</age>
    <intro><![CDATA[ad<<&$^#*k]]></intro></stu>

4.6.XML语法-处理指令

处理指令,简称PI(processing instruction)。处理指令用来指示解析引擎如何解析XML文件,看下面一个例子:

比如我们也可以使用css样式表来修饰XML文件,编写my.css如下:

name{    
font-size:80px;    
font-weight:bold;    
color:red;
}
sex{    
font-size:60px;    
font-weight:bold;    
color:blue;
}
sex{    
font-size:40px;    
font-weight:bold;    
color:green;
}

我们在xml文件中使用处理指令引入这个css文件,如下:

<?xml version="1.0" encoding="gb2312"?><?xml-stylesheet href="my.css" type="text/css"?><class>
    <stu id="001">
        <name>杨过</name> 
        <sex>男</sex>
        <age>20</age>
    </stu>  
    <stu id="002">
        <name>小龙女</name>    
        <sex>女</sex>
        <age>21</age>
    </stu></class>

这时候我们再用浏览器打开这个xml文件,会发现浏览器解析出一个带样式的视图,而不再是单纯的目录树了:

XML—XML介紹與基本語法

但是XML的处理指令不要求掌握,因为用到的很少。

5.格式正规的XML文档-小结

语法规范

  1. XML声明语句
    2.必须有一个根元素
    3.标记大小写敏感
    4.属性值用引号
    5.标记成对
    6.空标记关闭
    7.元素正确嵌套

 以上就是XML—XML介绍和基本语法的内容,更多相关内容请关注PHP中文网(www.php.cn)!


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JSON,XML和數據格式:比較RSSJSON,XML和數據格式:比較RSSMay 02, 2025 am 12:20 AM

JSON、XML和RSS的主要區別在於結構和用途:1.JSON適用於簡單數據交換,結構簡潔,易於解析;2.XML適合複雜數據結構,結構嚴謹但解析複雜;3.RSS基於XML,用於內容髮布,標準化但用途有限。

故障排除XML/RSS提要:常見的陷阱和專家解決方案故障排除XML/RSS提要:常見的陷阱和專家解決方案May 01, 2025 am 12:07 AM

XML/RSS訂閱源的處理涉及解析和優化,常見問題包括格式錯誤、編碼問題和元素缺失。解決方案包括:1.使用XML驗證工具檢查格式錯誤;2.確保編碼一致性並使用chardet庫檢測編碼;3.處理元素缺失時使用默認值或跳過該元素;4.使用高效解析器如lxml和緩存解析結果以優化性能;5.注意數據一致性和安全性,防止XML注入攻擊。

解碼RSS文檔:閱讀和解釋提要解碼RSS文檔:閱讀和解釋提要Apr 30, 2025 am 12:02 AM

解析RSS文檔的步驟包括:1.讀取XML文件,2.使用DOM或SAX解析XML,3.提取標題、鏈接等信息,4.處理數據。 RSS文檔是一種基於XML的格式,用於發布更新內容,結構包含、和元素,適用於構建RSS閱讀器或數據處理工具。

RSS和XML:Web聯合組織的基石RSS和XML:Web聯合組織的基石Apr 29, 2025 am 12:22 AM

RSS和XML是網絡內容分發和數據交換的核心技術。 RSS用於發布頻繁更新的內容,XML用於存儲和傳輸數據。通過實際項目中的使用示例和最佳實踐,可以提高開發效率和性能。

RSS提要:探索XML的作用和目的RSS提要:探索XML的作用和目的Apr 28, 2025 am 12:06 AM

XML在RSSFeed中的作用是結構化數據、標準化和提供可擴展性。 1.XML使得RSSFeed的數據結構化,便於解析和處理。 2.XML提供了一種標準化的方式來定義RSSFeed的格式。 3.XML的可擴展性使得RSSFeed可以根據需要添加新的標籤和屬性。

縮放XML/RSS處理:性能優化技術縮放XML/RSS處理:性能優化技術Apr 27, 2025 am 12:28 AM

處理XML和RSS數據時,可以通過以下步驟優化性能:1)使用高效的解析器如lxml提升解析速度;2)採用SAX解析器減少內存使用;3)利用XPath表達式提高數據提取效率;4)實施多進程並行處理提升處理速度。

RSS文檔格式:探索RSS 2.0及以後RSS文檔格式:探索RSS 2.0及以後Apr 26, 2025 am 12:22 AM

RSS2.0是一種開放標準,允許內容髮布者以結構化的方式分發內容。它包含了豐富的元數據,如標題、鏈接、描述、發布日期等,使得訂閱者能夠快速瀏覽和訪問內容。 RSS2.0的優勢在於其簡潔和擴展性。例如,它允許自定義元素,這意味著開發者可以根據需求添加額外的信息,如作者、分類等。

理解RSS:XML觀點理解RSS:XML觀點Apr 25, 2025 am 12:14 AM

RSS是一種基於XML的格式,用於發布經常更新的內容。 1.RSSfeed通過XML結構化組織信息,包括標題、鏈接、描述等。 2.創建RSSfeed需按照XML結構編寫,添加元數據如語言和發布日期。 3.高級用法可包含多媒體文件和分類信息。 4.調試時使用XML驗證工具,確保必需元素存在且編碼正確。 5.優化RSSfeed可通過分頁、緩存和保持結構簡潔來實現。通過理解和應用這些知識,可以有效管理和分發內容。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境