Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
所有主流的瀏覽器中,均能夠查看原始的 XML 文件。
不要指望 XML 文件會(huì)直接顯示為 HTML 頁(yè)面。
查看 XML 文件
<?xml version="1.0" encoding="ISO-8859-1"?>
- <note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
查看這個(gè) XML 文件:note.xml
XML 文檔將顯示為代碼顏色化的根以及子元素。通過(guò)點(diǎn)擊元素左側(cè)的加號(hào)(+)或減號(hào)( - ),可以展開(kāi)或收起元素的結(jié)構(gòu)。要查看原始的 XML 源(不包括 + 和 - 符號(hào)),選擇"查看頁(yè)面源代碼"或從瀏覽器菜單"查看源文件"。
注釋:在 Safari 中,只有元素的文本將被顯示。要查看原始的 XML,您必須右鍵單擊頁(yè)面,選擇"查看源文件"。
查看無(wú)效的 XML 文件
如果一個(gè)錯(cuò)誤的XML文件被打開(kāi),瀏覽器會(huì)報(bào)告錯(cuò)誤。
請(qǐng)查看這個(gè) XML 文件:note_error.xml
其他 XML 實(shí)例
請(qǐng)查看這些 XML 文檔,這會(huì)有助于您建立對(duì) XML 的感性認(rèn)識(shí)。
一個(gè) XML 的 CD 目錄
這是一個(gè) CD 集,存儲(chǔ)為 XML 數(shù)據(jù)。
一個(gè) XML 的植物目錄
這是一個(gè)來(lái)自植物店的植物目錄,存儲(chǔ)為 XML 數(shù)據(jù)。
一個(gè)簡(jiǎn)單的食物菜單
這是一個(gè)來(lái)自餐館的早餐菜單,存儲(chǔ)為 XML 數(shù)據(jù)。
為什么 XML 顯示這個(gè)樣子?
XML 文檔不會(huì)攜帶有關(guān)如何顯示數(shù)據(jù)的信息。
由于 XML 標(biāo)簽由 XML 文檔的作者"發(fā)明",瀏覽器無(wú)法確定像 <table> 這樣一個(gè)標(biāo)簽究竟描述一個(gè) HTML 表格還是一個(gè)餐桌。
在沒(méi)有任何有關(guān)如何顯示數(shù)據(jù)的信息的情況下,大多數(shù)的瀏覽器都會(huì)僅僅把 XML 文檔顯示為源代碼。
如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!
嘍,你好啊,我是雷工!
之前有朋友在群里聊XML文件操作的問(wèn)題,今天正好學(xué)習(xí)相關(guān)內(nèi)容,
以下為學(xué)習(xí)筆記。
①:XML是eXtensible Markup Language的縮寫,即擴(kuò)展標(biāo)記語(yǔ)言。
②:XML是一種可以用來(lái)創(chuàng)建自定義的標(biāo)記語(yǔ)言,由W3C(萬(wàn)維網(wǎng)協(xié)會(huì))創(chuàng)建,用來(lái)克服HTML的局限。
③:功能區(qū)別:XML主要用于數(shù)據(jù)的存儲(chǔ)和傳遞,節(jié)點(diǎn)數(shù)量不限,可以自由擴(kuò)展;HTML主要用于數(shù)據(jù)顯示,有多少節(jié)點(diǎn)是固定的。
①:確定且唯一的根元素;
②:開(kāi)始標(biāo)簽和結(jié)束標(biāo)簽相匹配;
③:元素標(biāo)簽的正確嵌套;
④:屬性值要用引號(hào)括起來(lái);
⑤:同一個(gè)元素的屬性不能重復(fù)。
【1】元素:<標(biāo)簽>文本內(nèi)容</標(biāo)簽>;
【2】處理指令:<?xml version="1.0"?>;
【3】注釋:<!--這是一個(gè)xml注釋-->;
【4】屬性:<salary currency=“US$”>10000</salary>;
4.1、添加X(jué)ML文件
在測(cè)試程序中添加類,選擇XML文件,填寫名稱“LeiGongXMLFile1”,然后點(diǎn)擊【添加】按鈕。
4.2、編輯XML文件
在文件中添加如下內(nèi)容:
<?xml version="1.0" encoding="utf-8" ?>
<Authors>
<Author>
<AutName>雷工</AutName>
<AutAge>18</AutAge>
<Gender>男</Gender>
<Account>雷工筆記</Account>
</Author>
<Author>
<AutName>康工</AutName>
<AutAge>17</AutAge>
<Gender>男</Gender>
<Account>康工筆記</Account>
</Author>
<Author>
<AutName>老王</AutName>
<AutAge>16</AutAge>
<Gender>男</Gender>
<Account>隔壁老王</Account>
</Author>
<Author>
<AutName>小陳</AutName>
<AutAge>19</AutAge>
<Gender>女</Gender>
<Account>小陳美食</Account>
</Author>
<Edition>
<EdiInfo ediNO="1.9" ediTime="2024-04-28">版本信息</EdiInfo>
</Edition>
</Authors>
5.1、添加控件
根據(jù)功能需求,添加UI界面的控件。
添加一個(gè)DataGridView控件、兩個(gè)Button控件,控件的屬性設(shè)置可參考合集《賬號(hào)管理系統(tǒng)相關(guān)文章》
5.2、效果演示
6.1、讀取思路
①:引入命名空間;
②:創(chuàng)建文檔對(duì)象;
③:加載XML文檔;
④:獲取根節(jié)點(diǎn);
⑤:遍歷節(jié)點(diǎn)并封裝數(shù)據(jù);
6.2、代碼如下
①:引入命名空間
using System.Xml;
②:加載XML文件
private void btnLoadXml_Click(object sender, EventArgs e)
{
//創(chuàng)建XML文檔操作對(duì)象
XmlDocument objDoc=new XmlDocument();
//加載XML文件到文檔對(duì)象中
objDoc.Load("F:\\F004-C#\\B002_xiangmu\\A002_FileOperation\\LeiGongXMLDemo\\LeiGongXMLFile1.xml");
//獲取XML文檔根目錄
XmlNode xmlNode=objDoc.DocumentElement;
//創(chuàng)建對(duì)象集合
List<Author> list=new List<Author>();
//遍歷根節(jié)點(diǎn)(根節(jié)點(diǎn)包含所有節(jié)點(diǎn))
foreach(XmlNode node in xmlNode.ChildNodes)
{
if(node.Name=="Author")
{
Author author=new Author();
foreach(XmlNode xmlNode1 in node)//遍歷子節(jié)點(diǎn)
{
switch(xmlNode1.Name)
{
case "AutName":
author.AutName=xmlNode1.InnerText;
break;
case "AutAge":
author.AutAge=Convert.ToInt16(xmlNode1.InnerText);
break;
case "Gender":
author.Gender=xmlNode1.InnerText;
break;
case "Account":
author.Account=xmlNode1.InnerText;
break;
}
}
list.Add(author);
}
}
this.dgvAutList.DataSource=list;
}
③:顯示版本信息
private void btnShowVersion_Click(object sender, EventArgs e)
{
//創(chuàng)建XML讀取器
XmlTextReader xmlTextReader=new XmlTextReader("F:\\F004-C#\\B002_xiangmu\\A002_FileOperation\\LeiGongXMLDemo\\LeiGongXMLFile1.xml");
string info=string.Empty;
//循環(huán)查詢
while (xmlTextReader.Read())
{
if(xmlTextReader.Name=="EdiInfo")
{
info="版本:" + xmlTextReader.GetAttribute("ediNO") + "發(fā)布時(shí)間:" + xmlTextReader.GetAttribute("ediTime");
break;
}
}
MessageBox.Show(info,"版本信息");
}
7.1、常用對(duì)象
①:XmlDocument對(duì)象表示XML整個(gè)文檔;
②:XmlNode對(duì)象表示XML文件的單個(gè)節(jié)點(diǎn);
7.2、常用屬性及說(shuō)明
對(duì)象 | 屬性和方法 | 說(shuō)明 |
XmlDocument | DocumentElement屬性 | 獲取根節(jié)點(diǎn) |
ChildNodes屬性 | 獲取所有子節(jié)點(diǎn) | |
Load()方法 | 讀取整個(gè)XML的結(jié)構(gòu) | |
XmlNode | InnerText屬性 | 當(dāng)前節(jié)點(diǎn)的值 |
Name屬性 | 當(dāng)前節(jié)點(diǎn)的名字 | |
ChildNodes屬性 | 當(dāng)前所有節(jié)點(diǎn)的所有子節(jié)點(diǎn) |
萬(wàn)維網(wǎng)協(xié)會(huì)推出的一套數(shù)據(jù)交換標(biāo)準(zhǔn)——XML,是一種可擴(kuò)展的標(biāo)記語(yǔ)言,被設(shè)計(jì)用來(lái)傳輸和存儲(chǔ)數(shù)據(jù)。XML 可用于定義 Web 網(wǎng)頁(yè)上的文檔元素以及復(fù)雜數(shù)據(jù)的表述和傳輸。
Extensible Markup Language,簡(jiǎn)稱 XML,中文含義是可擴(kuò)展標(biāo)記語(yǔ)言,該語(yǔ)言與 HTML 類似,主要功能是傳輸數(shù)據(jù)、儲(chǔ)存數(shù)據(jù)和共享數(shù)據(jù)。XML 語(yǔ)言沒(méi)有規(guī)定的標(biāo)簽體,需要自定義標(biāo)簽,是一種自我描述的語(yǔ)言。XML 與 HTML 有著本質(zhì)的區(qū)別,XML 傳輸和存儲(chǔ)數(shù)據(jù),而 HTML 用來(lái)顯示數(shù)據(jù)。
XML 的最大特點(diǎn)是自我描述和任意擴(kuò)展,當(dāng)用其描述數(shù)據(jù)時(shí),用戶可以根據(jù)需要,組織符合 XML 規(guī)范形式的任意內(nèi)容,并且標(biāo)簽的名稱也可以由用戶指定。
圖片來(lái)源網(wǎng)絡(luò)
例如,一個(gè)描述書籍的XML文檔可能如下:
<?xml version="1.0" encoding="UTF-8" ?> <!-- 文檔聲明,默認(rèn)編碼為UTF-8 --><!DOCTYPE note SYSTEM "book.dtd"><book id="1"> <name>Java核心技術(shù)</name> <author>Cay S. Horstmann</author> <isbn lang="CN">1234567</isbn> <tags> <tag>Java</tag> <tag>Network</tag> </tags> <pubDate/></book>
XML有固定的結(jié)構(gòu),首行必定是<?xml version="1.0"?>,可以加上可選的編碼。緊接著,如果以類似<!DOCTYPE note SYSTEM "book.dtd">聲明的是文檔定義類型(DTD:Document Type Definition),DTD是可選的。接下來(lái)是XML的文檔內(nèi)容,一個(gè)XML文檔有且僅有一個(gè)根元素,根元素可以包含任意個(gè)子元素,元素可以包含屬性,例如,<isbn lang="CN">1234567</isbn>包含一個(gè)屬性lang="CN",且元素必須正確嵌套。如果是空元素,可以用<tag/>表示。
XML有幾個(gè)特點(diǎn):一是純文本,默認(rèn)使用UTF-8編碼,二是可嵌套,適合表示結(jié)構(gòu)化數(shù)據(jù)。如果把XML內(nèi)容存為文件,那么它就是一個(gè)XML文件,例如book.xml。此外,XML內(nèi)容經(jīng)常通過(guò)網(wǎng)絡(luò)作為消息傳輸。
所有 XML 元素都須有關(guān)閉標(biāo)簽
在 HTML,經(jīng)常會(huì)看到?jīng)]有關(guān)閉標(biāo)簽的元素:
<p>This is a paragraph<p>This is another paragraph
在 XML 中,省略關(guān)閉標(biāo)簽是非法的。所有元素都必須有關(guān)閉標(biāo)簽:
<p>This is a paragraph</p><p>This is another paragraph</p>
注釋:您也許已經(jīng)注意到 XML 聲明沒(méi)有關(guān)閉標(biāo)簽。這不是錯(cuò)誤。聲明不屬于XML本身的組成部分。它不是 XML 元素,也不需要關(guān)閉標(biāo)簽。
XML 標(biāo)簽對(duì)大小寫敏感
XML 元素使用 XML 標(biāo)簽進(jìn)行定義。
XML 標(biāo)簽對(duì)大小寫敏感。在 XML 中,標(biāo)簽 <Letter> 與標(biāo)簽 <letter> 是不同的。
必須使用相同的大小寫來(lái)編寫打開(kāi)標(biāo)簽和關(guān)閉標(biāo)簽:
<Message>這是錯(cuò)誤的。</message><message>這是正確的。</message>
注釋:打開(kāi)標(biāo)簽和關(guān)閉標(biāo)簽通常被稱為開(kāi)始標(biāo)簽和結(jié)束標(biāo)簽。不論您喜歡哪種術(shù)語(yǔ),它們的概念都是相同的。
XML 必須正確地嵌套
在 HTML 中,常會(huì)看到?jīng)]有正確嵌套的元素:
<b><i>This text is bold and italic</b></i>
在 XML 中,所有元素都必須彼此正確地嵌套:
<b><i>This text is bold and italic</i></b>
在上例中,正確嵌套的意思是:由于 <i> 元素是在 <b> 元素內(nèi)打開(kāi)的,那么它必須在 <b> 元素內(nèi)關(guān)閉。
XML 文檔必須有根元素
所有的 XML 文檔有且只有一個(gè)根元素來(lái)定義整個(gè)文檔。
XML 文檔必須有一個(gè)元素是所有其他元素的父元素。該元素稱為根元素。
<root> <child> <subchild>.....</subchild> </child></root>
XML 的屬性值須加引號(hào)
與 HTML 類似,XML 也可擁有屬性(名稱/值的對(duì))。
在 XML 中,XML 的屬性值須加引號(hào)。請(qǐng)研究下面的兩個(gè) XML 文檔。第一個(gè)是錯(cuò)誤的,第二個(gè)是正確的:
<note date=08/08/2008><to>George</to><from>John</from></note> <note date="08/08/2008"><to>George</to><from>John</from></note>
在第一個(gè)文檔中的錯(cuò)誤是,note 元素中的 date 屬性沒(méi)有加引號(hào)。
實(shí)體引用
在 XML 中,一些字符擁有特殊的意義。
如果你把字符 "<" 放在 XML 元素中,會(huì)發(fā)生錯(cuò)誤,這是因?yàn)榻馕銎鲿?huì)把它當(dāng)作新元素的開(kāi)始。
這樣會(huì)產(chǎn)生 XML 錯(cuò)誤:
<message>if salary < 1000 then</message>
為了避免這個(gè)錯(cuò)誤,請(qǐng)用實(shí)體引用來(lái)代替 "<" 字符:
<message>if salary < 1000 then</message>
在 XML 中,有 5 個(gè)預(yù)定義的實(shí)體引用:
<<小于>>大于&&和號(hào)''單引號(hào)""引號(hào)
注釋:在 XML 中,只有字符 "<" 和 "&" 確實(shí)是非法的。大于號(hào)是合法的,但是用實(shí)體引用來(lái)代替它是一個(gè)好習(xí)慣。
XML 中的注釋
在 XML 中編寫注釋的語(yǔ)法與 HTML 的語(yǔ)法很相似:
<!-- This is a comment -->
在 XML 中,空格會(huì)被保留
HTML 會(huì)把多個(gè)連續(xù)的空格字符裁減(合并)為一個(gè).在 XML 中,文檔中的空格不會(huì)被刪節(jié)。
XML 以 LF 存儲(chǔ)換行
在 Windows 應(yīng)用程序中,換行通常以一對(duì)字符來(lái)存儲(chǔ):回車符 (CR) 和換行符 (LF)。這對(duì)字符與打字機(jī)設(shè)置新行的動(dòng)作有相似之處。在 Unix 應(yīng)用程序中,新行以 LF 字符存儲(chǔ)。而 Macintosh 應(yīng)用程序使用 CR 來(lái)存儲(chǔ)新行。
什么是 XML 元素?
XML 元素指的是從(且包括)開(kāi)始標(biāo)簽直到(且包括)結(jié)束標(biāo)簽的部分。
元素可包含其他元素、文本或者兩者的混合物。元素也可以擁有屬性。
<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>都擁有元素內(nèi)容,因?yàn)樗鼈儼似渌亍?lt;author>只有文本內(nèi)容,因?yàn)樗鼉H包含文本。
在上例中,只有 <book> 元素?fù)碛袑傩?(category="CHILDREN")。
XML 命名規(guī)則
XML 元素必須遵循以下命名規(guī)則:
可使用任何名稱,沒(méi)有保留的字詞。
最佳命名習(xí)慣
使名稱具有描述性。使用下劃線的名稱也很不錯(cuò)。
名稱應(yīng)當(dāng)比較簡(jiǎn)短,比如:<book_title>,而不是:<the_title_of_the_book>。
避免 "-" 字符。如果您按照這樣的方式進(jìn)行命名:"first-name",一些軟件會(huì)認(rèn)為你需要提取第一個(gè)單詞。
避免 "." 字符。如果您按照這樣的方式進(jìn)行命名:"first.name",一些軟件會(huì)認(rèn)為 "name" 是對(duì)象 "first" 的屬性。
避免 ":" 字符。冒號(hào)會(huì)被轉(zhuǎn)換為命名空間來(lái)使用(稍后介紹)。
XML 文檔經(jīng)常有一個(gè)對(duì)應(yīng)的數(shù)據(jù)庫(kù),其中的字段會(huì)對(duì)應(yīng) XML 文檔中的元素。有一個(gè)實(shí)用的經(jīng)驗(yàn),即使用數(shù)據(jù)庫(kù)的名稱規(guī)則來(lái)命名 XML 文檔中的元素。
非英語(yǔ)的字母比如 éòá 也是合法的 XML 元素名,不過(guò)需要留意當(dāng)軟件開(kāi)發(fā)商不支持這些字符時(shí)可能出現(xiàn)的問(wèn)題。
XML 屬性
從 HTML,你會(huì)回憶起這個(gè):<img src="computer.gif">。"src" 屬性提供有關(guān)<img> 元素的額外信息。
在 HTML 中(以及在 XML 中),屬性提供有關(guān)元素的額外信息:
<img src="computer.gif"><a href="demo.asp">
屬性通常提供不屬于數(shù)據(jù)組成部分的信息。在下面的例子中,文件類型與數(shù)據(jù)無(wú)關(guān),但是對(duì)需要處理這個(gè)元素的軟件來(lái)說(shuō)卻很重要:
<file type="gif">computer.gif</file>
XML 屬性必須加引號(hào)
屬性值必須被引號(hào)包圍,不過(guò)單引號(hào)和雙引號(hào)均可使用。比如一個(gè)人的性別,person 標(biāo)簽可以這樣寫:
<person sex="female">
或者這樣也可以:
<person sex='female'>
注釋:如果屬性值本身包含雙引號(hào),那么有必要使用單引號(hào)包圍它,就像這個(gè)例子:
<gangster name='George "Shotgun" Ziegler'>
或者可以使用實(shí)體引用:
<gangster name="George "Shotgun" Ziegler">
可參閱:
本文由以上文章整理
點(diǎn)擊下方“了解更多”查看網(wǎng)頁(yè)原文,謝謝您的關(guān)注!
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。