您好,登錄后才能下訂單哦!
小編給大家分享一下XML有哪些作用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
概述
XML:Extensible Markup Language(可擴展標記語言)的縮寫,是用來定義其它語言的一種元語言,其前身是SGML(Standard Generalized Markup Language,標準通用標記語言)。它沒有標簽集(tag set),也沒有語法規則(grammatical rule),但是它有句法規則(syntax rule)。 任何XML文檔對任何類型的應用以及正確的解析都必須是良構的(well-formed),即每一個打開的標簽都必須有匹配的結束標簽,不得 含有次序顛倒的標簽,并且在語句構成上應符合技術規范的要求。XML文檔可以是有效的(valid),但并非一定要求有效。所謂有效文檔是指其符合其文檔 類型定義(DTD)的文檔。如果一個文檔符合一個模式(schema)的規定,那么這個文檔是"模式有效的(schema valid)"。
XML 是一種標記語言,很類似 HTML ,XML 的設計宗旨是傳輸數據,而非顯示數據 ,XML 標簽沒有被預定義。您需要自行定義標簽。 XML 被設計為具有自我描述性。 XML 是 W3C 的推薦標準
很多新的 Internet 語言是通過 XML 創建的:
其中的例子包括:
XHTML - 最新的 HTML 版本 ,WSDL - 用于描述可用的 web service ,WAP 和 WML - 用于手持設備的標記語言 ,RSS - 用于 RSS feed 的語言 ,
RDF 和 OWL - 用于描述資源和本體 ,SMIL - 用于描述針針對 web 的多媒體
下面來看一個常用案例:
<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>
可以用如下圖來解釋:
在 XML 中,一些字符擁有特殊的意義。
如果你把字符 "<" 放在 XML 元素中,會發生錯誤,這是因為解析器會把它當作新元素的開始。
這樣會產生 XML 錯誤:
<message>if salary < 1000 then</message>
為了避免這個錯誤,請用實體引用來代替 "<" 字符:
<message>if salary < 1000 then</message>
在 XML 中,有 5 個預定義的實體引用:
XML 元素必須遵循以下命名規則:
名稱可以含字母、數字以及其他的字符
名稱不能以數字或者標點符號開始
名稱不能以字符 “xml”(或者 XML、Xml)開始
名稱不能包含空格
可使用任何名稱,沒有保留的字詞。
XMLHttpRequest 對象用于在后臺與服務器交換數據。
XMLHttpRequest 對象是開發者的夢想,因為您能夠:
在不重新加載頁面的情況下更新網頁
在頁面已加載后從服務器請求數據
在頁面已加載后從服務器接收數據
在后臺向服務器發送數據
所有現代的瀏覽器都支持 XMLHttpRequest 對象。
所有現代瀏覽器 (IE7+、Firefox、Chrome、Safari 以及 Opera) 都內建了 XMLHttpRequest 對象。
通過一行簡單的 JavaScript 代碼,我們就可以創建 XMLHttpRequest 對象。
xmlhttp=new XMLHttpRequest();
當今,XML 是非常重要的技術,并且開發項目正在使用這些基于 XML 的技術:
用 XML Schema 定義 XML 的結構和數據類型
用 XSLT 來轉換 XML 數據
用 SOAP 來交換應用程序之間的 XML 數據
用 WSDL 來描述網絡服務
用 RDF 來描述網絡資源
用 XPath 和 XQuery 來訪問 XML 數據
用 SMIL 來定義圖形
XSLT
XSLT(eXtensible Stylesheet Language Transformation)是一種用來轉換XML文檔結構的語言。
XSL的處理過程:
首先是根據XML文檔構造源樹,然后根據XSL規則將源樹轉換為結果樹,生成結果樹后,對其進行解釋,格式化為一種適合顯示、打印或是播放的格式。
XSLT和CSS的比較:
CSS | XSLT |
使用簡單 | 使用復雜 |
不能排序、添加或刪除元素 | 可排序、添加或刪除元素 |
不能訪問文檔除元素外的其它信息 | 能訪問其它信息 |
使用內存比較少 | 使用較多內存和處理器能力 |
與XML語法不同 | 語法與XML相同 |
XPath基礎
XPath就是一種專門用來在XML文檔中定位和查找信息的語言,通過XPath可對XML文檔中的元素和屬性進行遍歷,是高級XML應用的基礎 。
XPath主要有四種數據類型:(1)節點集.(2)布爾類型.(3)字符串類型.(4)數值類型
在XPath中,可以將節點劃分為七種節點類型:(1)根節點(Root Node).(2)元素節點(Element Nodes).(3)文本節點(Text Nodes).(4)屬性節點(Attribute Nodes).(5)命名空間節點(Namespace Nodes).(6)處理指令節點(Processing Instruction Nodes).(7)注釋節點(Comment Nodes).
XPath節點關系:(1)父(parent).(2)子(children).(3)同胞(sibling).(4)先輩(ancestor).(5)后代(descendant).
XPath表達式
XPath將XML文檔看作由節點構成的層次樹,通過編寫XPath表達式來定位樹中特定的節點
XPath路徑表達式:
表達式 | 描述 |
nodename | 選取此節點的所有子節點 |
/ | 從根節點選取,絕對路徑,表示當前文檔的根節點 |
// | 從任意節點選取,相對路徑,表示當前文檔所有的節點 |
. | 選取當前節點 |
.. | 選取當前節點的父節點 |
@ | 選取屬性 |
例子
<?xml version="1.0" encoding="GB2312"?> <bookstore> <book> <title lang="en">RESTful Web Services</title> <price>29.00</price> </book> <book> <title lang="zh">C#編程基礎</title> <price>46.00</price> </book> </bookstore>
解析:
bookstore | 選取 bookstore 元素的所有子節點 |
/bookstore | 選取根節點bookstore元素 |
/bookstore/book/price | 選取bookstore元素下所有book元素的所有price元素 |
/bookstore/book/* | 選取/bookstore/book的所有子元素 |
bookstore/book | 選取bookstore元素下所有的book子元素 |
//bookstore | 選取文檔中所有的bookstore元素,無論它在什么層次 |
bookstore//book | 選取在bookstore元素下所有的book元素,無論它們位于bookstore之下的什么位置 |
/bookstore/*/price | 選取bookstore的子元素中,包含有price作為子元素的元素 |
//* | 選取文件中的所有元素 |
//@lang | 選取所有名為 lang 的屬性 |
謂語表達式:
路徑表達式 | 描述 |
/bookstore/book[last()] | 選取屬于bookstore子元素的最后一個book元素 |
/bookstore/book[last()-1] | 選取屬于bookstore子元素的倒數第二個book元素 |
/bookstore/book[position()<3] | 選取前兩個屬于bookstore元素的子元素的book元素 |
//title[@lang] | 選取所有擁有名為lang的屬性的title元素 |
//title[@lang="en"] | 選取所有title元素,且這些元素擁有值為 eng 的 lang 屬性 |
/bookstore/book[price>15.00] | 選取所有bookstore元素的book元素,且其中的price元素的值須大于15.00 |
/bookstore/book[price>15.00]/title | 選取所有bookstore元素中的book元素的title元素,且其中的price元素的值須大于15.00 |
//title[@*] | 選取所有帶有屬性的 title 元素 |
如果需要選擇一個以上的路徑,可以在XPath表達式中使用“|”運算符:
路徑表達式 | 描述 |
//book/title | //book/price | 選取所有book元素的title和price元素 |
//title | //price | 選取文檔中所有的title和price元素 |
/bookstore/book/title | //price | 選取所有屬于bookstore元素的book元素的title元素,以及文檔中所有的price元素 |
XPath表達式的常用運算符:
運算符 | 描述 | 實例 |
| | 計算兩個節點集 | //book | //cd,返回所有帶有 book 和 cd 元素的節點集 |
+ | 加法 | 6 + 4, |
- | 減法 | 6 - 4 |
* | 乘法 | 6 * 4 |
p | 除法 | 8 p 4 |
= | 等于 | price=15 |
!= | 不等于 | price!=15 |
< | 小于 | price<15 |
<= | 小于或等于 | price<=15 |
> | 大于 | price>15 |
>= | 大于或等于 | price>=15 |
or | 或 | price=15 or price=35 |
and | 與 | price>15 or price<35 |
mod | 計算除法的余數 | 5 mod 2 |
示例
private void button1_Click(object sender, EventArgs e) { XmlDocument doc = new XmlDocument(); doc.Load(@"..\..\CD.xml"); XmlElement root = null; root = doc.DocumentElement; XmlNodeList listNodes = null; listNodes = root.SelectNodes("/bookstore/book/price"); foreach (XmlNode node in listNodes ) { richTextBox1.Text += node.InnerText + "\n"; } }
結果:
29.00
46.00
以上是“XML有哪些作用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。