XML 简介 XML 被设计用来传输和存储数据。类似于JSON 。 XML 指可扩展标记语言(EXtensible Markup Lang uage) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没有被预定义。您需要自行定义标签。 XML 被设计为具有自我描述性。 XML 是 W3C 的推荐标准 XML 被设计用来结构化、存储以及传输信息。(没有格式双方很难知道信息的结构内容) 实例:
<?xml version="1.0" encoding="utf-8"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note> 登入後複製
实例解释: 第一行是 XML 声明。它定义 XML 的版本 (1.0) 和所使用的编码 (ISO-8859-1 = Latin-1/西欧字符集 )。 描述文档的根元素
<note>//根元素的开始
**
</note> //根元素的结尾 登入後複製
4个子元素
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body> 登入後複製
就这样XML文档会形成一种树结构,如下:
<?xml version="1.0" encoding="utf-8"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>
<A>George</A>
<B>John</B>
<C>Reminder</C>
</body>
</note> 登入後複製
所有 XML 元素都须有关闭标签
<p>This is a paragraph //错
<p>This is a paragraph</p> //对 登入後複製
XML 标签对大小写敏感
<Message>这是错误的。</message> //错
<message>这是正确的。</message> //对 登入後複製
XML 必须正确地嵌套
<b><i>This text is bold and italic</b></i> //错
<b><i>This text is bold and italic</i></b> //对 登入後複製
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> 登入後複製
实体引用 :就是特殊字符 的转意。 < < 小于 > > 大于 & & 和号 ' ' 单引号 " " 引号
<message>if salary < 1000 then</message> 登入後複製
想要的:
<message>if salary < 1000 then</message> 登入後複製
XML 中的注释
<!-- This is a comment --> 登入後複製
在 XML 中,空格会被保留 HTML 会把多个连续的空格字符裁减(合并)为一个:
HTML:Hello my name is David.
输出:Hello my name is David. 登入後複製
在 XML 中,文档中的空格不会被删节。
XML 元素 开始标签直到(且包括)结束标签的部分。如:
元素可包含其他元素、文本或者两者的混合物。元素也可以拥有属性。如:
<book category="CHILDREN"> //category(属性)
<title>Harry Potter</title> //book的子元素,这个子元素只有文本内容
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book> 登入後複製
XML 命名规则
XML 元素必须遵循以下命名规则: 名称可以含字母、数字以及其他的字符 名称不能以数字或者标点符号开始 名称不能以字符 “xml”(或者 XML、Xml)开始 名称不能包含空格
XML 元素 vs. 属性
<person sex="female"> //属性
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex> //元素
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person> 登入後複製
没有什么规矩可以告诉我们什么时候该使用属性,而什么时候该使用子元素,在 XML 中, 您应该尽量避免使用属性。如果信息感觉起来很像数据,那么请使用子元素吧。 属性无法包含多重的值(元素可以) 属性无法描述树结构(元素可以) 属性不易扩展(为未来的变化) 属性难以阅读和维护
XML 命名空间 (XML Namespaces)
XML 命名空间提供避免元素命名冲突的方法。 这个 XML 文档携带着某个表格 中的信息:
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table> 登入後複製
这个 XML 文档携带有关桌子的信息(一件家具):
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table> 登入後複製
由于两个文档都包含带有不同内容和定义的
元素,就会发生命名冲突。 使用前缀来避免命名冲突
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table> 登入後複製
使用命名空间(Namespaces)
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table> 登入後複製
此 XML 文档携带着有关一件家具的信息:
<f:table xmlns:f="http://www.w3school.com.cn/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table> 登入後複製
默认的命名空间(Default Namespaces)
为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。
<table xmlns="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table> 登入後複製
此 XML 文档携带着有关一件家具的信息:
<table xmlns="http://www.w3school.com.cn/furniture">
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table> 登入後複製
命名空间是就近原则的
<?xml version="1.0" encoding="utf-8"?>
<root xmlns="dotnet" xmlns:w="wpf">
<!-- xmlns: dotnet -->
<a>data in a</a> //默认的命名空间
<!-- xmlns: dotnet -->
<w:b>data in b</w:b> //w命名空间
<!-- xmlns: wpf -->
<c xmlns="silverlight">
<!-- xmlns: silverlight -->
<w:d>
<!-- xmlns: wpf -->
<e>data in e</e>
<!-- xmlns: silverlight --> //就近原则
</w:d>
</c>
</root> 登入後複製
CDATA 术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。(就是里面的数据不进行XML解析) CDATA 部分由 "" 结束:
<script>
<![CDATA[ //开始
function matchwo(a,b)
{
if (a < b && a < 0) then
{
return 1;
}
else
{
return 0;
}
}
]]> //结束
</script> 登入後複製
以上是詳細介紹XML原理程式碼實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
能否用PowerPoint開啟XML文件
Feb 19, 2024 pm 09:06 PM
XML檔可以用PPT開啟嗎? XML,即可擴展標記語言(ExtensibleMarkupLanguage),是一種廣泛應用於資料交換和資料儲存的通用標記語言。與HTML相比,XML更加靈活,能夠定義自己的標籤和資料結構,使得資料的儲存和交換更加方便和統一。而PPT,即PowerPoint,是微軟公司開發的一種用於創建簡報的軟體。它提供了圖文並茂的方
nohup的作用及原理解析
Mar 25, 2024 pm 03:24 PM
nohup的作用及原理解析在Unix和類Unix作業系統中,nohup是一個常用的命令,用於在後台運行命令,即便用戶退出當前會話或關閉終端窗口,命令仍然能夠繼續執行。在本文中,我們將詳細解析nohup指令的作用和原理。一、nohup的作用後台運行命令:透過nohup命令,我們可以讓需要長時間運行的命令在後台持續執行,而不受用戶退出終端會話的影響。這在需要運行
您如何在PHP中解析和處理HTML/XML?
Feb 07, 2025 am 11:57 AM
本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲
深入探討Struts框架的原理與實踐
Feb 18, 2024 pm 06:10 PM
Struts框架的原理解析與實務探索Struts框架作為JavaWeb開發中常用的MVC框架,具有良好的設計模式和可擴展性,廣泛應用於企業級應用程式開發中。本文將對Struts框架的原理進行解析,並結合實際程式碼範例進行探索,幫助讀者更好地理解和應用該框架。一、Struts框架的原理解析1.MVC架構Struts框架是基於MVC(Model-View-Con
深入理解MyBatis中的批次Insert實作原理
Feb 21, 2024 pm 04:42 PM
MyBatis是一款流行的Java持久層框架,廣泛應用於各種Java專案。其中,批次插入是常見的操作,可以有效提升資料庫操作的效能。本文將深入探討MyBatis中批量的Insert實作原理,並結合具體的程式碼範例進行詳細解析。 MyBatis中的批次Insert在MyBatis中,批量Insert操作通常使用動態SQL來實作。透過建構一條包含多個插入值的S
深入探討Linux RPM工具的功能與原理
Feb 23, 2024 pm 03:00 PM
Linux系統中的RPM(RedHatPackageManager)工具是安裝、升級、解除安裝和管理系統軟體套件的強大工具。它是RedHatLinux系統中常用的軟體包管理工具,也被許多其他Linux發行版採用。 RPM工具的角色非常重要,它使得系統管理員和使用者能夠方便地管理系統上的軟體包。透過RPM,使用者可以輕鬆安裝新的軟體包,升級現有的軟體
如何使用 PHP 函數處理 XML 資料?
May 05, 2024 am 09:15 AM
使用PHPXML函數處理XML資料:解析XML資料:simplexml_load_file()和simplexml_load_string()載入XML檔案或字串。存取XML資料:利用SimpleXML物件的屬性和方法來取得元素名稱、屬性值和子元素。修改XML資料:使用addChild()和addAttribute()方法新增元素和屬性。序列化XML資料:asXML()方法將SimpleXML物件轉換為XML字串。實戰案例:解析產品饋送XML,提取產品信息,轉換並將其儲存到資料庫中。
MyBatis分頁插件原理詳解
Feb 22, 2024 pm 03:42 PM
MyBatis是一個優秀的持久層框架,它支援基於XML和註解的方式操作資料庫,簡單易用,同時也提供了豐富的插件機制。其中,分頁插件是使用頻率較高的插件之一。本文將深入探討MyBatis分頁外掛的原理,並結合具體的程式碼範例進行說明。一、分頁外掛原理MyBatis本身並沒有提供原生的分頁功能,但可以藉助外掛程式來實現分頁查詢。分頁插件的原理主要是透過攔截MyBatis
See all articles