XML作為一種用來跨平臺的通用語言,越來越受重視。XML是一種標準化的文本格式,可以在web上表示結構化信息,利用它可以存儲有復雜結構的詩句信息,XML是HTML的補充,但XML并不是HTML的替代品,在將來的網頁開發中,XML將被用來描述、存儲數據,而HTML是用來格式化和顯示數據的。
隨著HTML的不斷發展,W3C組織意識到HTML存在一些無法避免的問題:
1、不能解決所有解釋數據的問題,例如影音文件或化學公式、音樂符號等其他形式的內容;
2、效能問題,需要下載整份文件才能對文件做搜尋的動作;
3、擴充性、彈性、易讀性都不佳。
下面是XML語言的特點:
1、XML是一種元標記語言,所謂“元標記語言”,是指開發者可以根據需要定義自己的標記,例如,開發者可以定義標記<book><name>,任何滿足XML命名規則的名稱都可以作為標記,這就為不同應用程序的應用打開了大門;
2、允許通過使用自定義格式,表示、交換和處理出具庫可以理解的數據;
3、基于文本的格式,允許開發人員描述結構化數據并在各種應用之間發送和交換這些數據;
4、有助于服務器之間傳輸結構化數據;
5、XML使用的是非專有的格式,不受版權、專利、商業秘密或是其他種類的知識產權的限制,XML的功能是非常強大的,同時對于人類或是計算機程序來說都容易閱讀和編寫,因而成為交換語言的首選,網絡帶給人類的最大好處是信息共享,在不同的計算機值ijianfasong數據,而XML用來告訴我們“數據是什么”,利用XML可以在網絡上交換任何信息。
例如一個XML文件中的代碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<電器>
<電器1>
<名字>電視機</名字>
<生產時間>2017年1月20日</生產時間>
</電器1>
<電器2>
<名字>電冰箱</名字>
<生產時間>2017年1月20日</生產時間>
</電器2>
<電器3>
<名字>手電筒</名字>
<生產時間>2017年1月20日</生產時間>
</電器3>
</電器>
XML語法基礎
1、XML文檔的組成和聲明:
一個完整的XML文檔由聲明、元素、注釋、字符引用和處理指令組成,所有這些XML文檔的組成部分都是通過元素標記來指明的。
XML生命必須作為XML文檔的第一行,前面不能有空白、注釋或其他的處理指令,完整的聲明格式如下:
<?xml version="1.0" encoding="UTF-8" ?>
2、XML元素介紹:
(1)元素類別:
在XML文檔中,元素分為非空元素和空元素兩種類型,一個XML非空元素是由開始標記、結束標記和標記之間的數據構成的。
<開始標記>標記內容</結束標記>
而空元素就是不包含任何內容的元素,例如:
<開始標記></結束標記>
非空元素還可以這樣表示:
<開始標記 content="標記內容"></結束標記>
(2)元素命名規范:
a、元素名中可以包含字母、數字和其他字符,雖然可以包含中文,但是在不支持中文的環境中將不能夠解釋包含中文字符的XML文檔;
b、元素名中不能以數字或標點符號開頭;
c、元素命中不能包含空格。
3、實體引用:
XML元素內容中不能包含“<”、“>”等內容,因為XML不知道標簽的結尾從哪里開始。
要解決這個問題,就要使用實體引用,如下:
“<”為"<"
“>”為">"
“&”為"&"
“ ' ”為"'"
“ " ”為"&qout;"
例如:
<ok>2 &rt; 1</ok>
4、XML命名空間:
如果一個XML文檔中出現了HTML文檔中才出現的元素名稱,如:
<body>
<form></form>
</body>
則瀏覽器在解析的時候會出錯,不知道到底是按照XML還是HTML進行解析,要解決這個問題,可以使用名稱前綴:
<s:body>
<s:form></s:form>
</s:body>
在PHP中創建XML文檔
XML是標記語言,PHP是腳本語言,使用腳本語言是可以創建標識語言的。
在網站中建立文件xml.php,輸入以下代碼:
header('Content-type:text/xml;charset="utf-8"');
echo '<?xml version="1.0" encoding="utf-8" ?>';
echo '<商品>';
echo '<名字>PHP學習筆記</名字>';
echo '<時間>2017年1月1日</時間>';
echo '</商品>';
運行這個文件,即可看到效果。
以上通過PHP創建xml文檔是靜態方法,如果想要從獲得的數據中動態創建或者讀取XML文件,應該使用什么方式呢?最簡單的方法就是使用PHP中提供的SimpleXML擴展。
header('Content-type:text/xml;charset="utf-8"');
$xmldoc = '<?xml version="1.0" encoding="utf-8" ?>';
$xmldoc .= '<商品>';
$xmldoc .= '<名字>趙一鳴PHP學習筆記</名字>';
$xmldoc .= '<時間>2017年1月1日</時間>';
$xmldoc .= '</商品>';
$simpleXmlObj = new SimpleXMLElement($xmldoc);
echo $simpleXmlObj->asXML();
更改以上最后一行代碼為:
echo $simpleXmlObj->asXML(‘a.xml’);
訪問XML特定節點元素和屬性
通過simplexml類方法addAttribute和addChild添加XML元素和屬性,具體步驟如下:
<?php
header('Content-type:text/xml;charset="utf-8"');
$xmlObj = simplexml_load_file('test.xml');
$xmlObj->addAttribute('english', 'electrical');
$xmlObj->asXML('b.xml');
查看生成的b.php中的代碼如下:
<?xml version="1.0" encoding="UTF-8"?>
<電器 english="electrical">
<電器1>
<名字>電視機</名字>
<生產時間>2017年1月20日</生產時間>
</電器1>
<電器2>
<名字>電冰箱</名字>
<生產時間>2017年1月20日</生產時間>
</電器2>
<電器3>
<名字>手電筒</名字>
<生產時間>2017年1月20日</生產時間>
</電器3>
</電器>
simplexml_load_file()加載xml文件,通過類方法addAttribute()在跟元素添加屬性。
動態創建XML文檔
使用SimpleXML對象可以十分方便的讀取和修改XML文檔,但是無法動態建立XML,如果想動態的創建XML文檔,需要使用DOM來實現,DOM是文檔對象模型,是W3C組織推薦的處理可擴展標志語言的標準編程接口。
下面是使用DOM動態創建XML文檔的方法:
<?php
$dom = new DOMDocument('1.0', 'utf-8');//創建DOM對象
$store = $dom->createElement('store');//創建store節點
$dom->appendChild($store);//將節點插入dom中
$album = $dom->createElement('album');
$albumAttr = $dom->createAttribute('catalog');//創建屬性
$albumAttr->value = 'song';//給屬性賦值
$album->appendChild($albumAttr);//將屬性插入到節點中
$store->appendChild($album);
$name = $dom->createElement('name');//創建普通節點
$nameVal = $dom->createTextNode('天地一斗');//創建文本節點
$name->appendChild($nameVal);//將文本節點插入到普通節點中
$album->appendChild($name);
$author = $dom->createElement('author');
$authorVal = $dom->createTextNode('jay');
$author->appendChild($authorVal);
$album->appendChild($author);
$heading = $dom->createElement('heading');
$headingVal = $dom->createTextNode('周杰倫專輯');
$heading->appendChild($headingVal);
$album->appendChild($heading);
/*//第一種方法:保存為d.xml文件
header('Content-type:text/html;charset="utf-8"');
$dom->save('d.xml');*/
//第二種方法:本頁面直接打開
header('Content-type:text/xml');
echo $dom->savexml();
- 0、php安裝
- 1、選擇PHP作為首選后端語言的原因
- 2、PHP基本語法
- 3、PHP中變量和常量的區別
- 4、PHP中單引號和雙引號的區別
- 5、PHP檢測數據類型的幾種方式
- 6、PHP數據類型轉換
- 7、return、break、continue的區別
- 8、PHP代碼重用
- 9、字符串移除或添加函數
- 10、PHP中字符串大小寫切換以及翻轉和加密
- 11、PHP字符串截取和截取函數
- 12、PHP字符串替換和比較函數
- 13、PHP字符串url解析和實體轉換
- 14、addslashes在預定義字符串前添加反斜杠
- 15、PHP中的數組基本概念
- 16、數組函數implode、explode、in_array、each、list
- 17、PHP數組函數(count、reset、end、next、current、key)
- 18、ZendStudio軟件破解安裝包免費下載
- 19、【圖文】ZendStudio漢化方法
- 20、數組函數in_array、array_search、array_change_key_case、array_chu
- 21、關閉PHP提示的方法(運行出現Notice : Use of undefined constant 的完美解決方案
- 22、PHP數組函數(array_diff_ukey、array_diff_uassoc、array_intersect
- 23、PHP數組函數(array_fill、array_filter、array_flip、array_key_exis
- 24、PHP數組去重及向前向后刪除元素的函數
- 25、PHP數組函數(array_map、array_walk、array_walk_recursive)
- 26、PHP數組函數(compact、extract)
- 27、PHP數組函數(array_merge、array_merge_recursive)
- 28、PHP數組函數(range、array_count_values、array_product)
- 29、PHP數組函數(array_reduce、array_slice、array_splice、array_sum)
- 30、PHP數組排序函數總結
- 31、PHP中面向對象的基本概念及定義對象的方法
- 32、PHP創建對象與構造函數
- 33、PHP對象的釋放
- 34、PHP面向對象的特性(抽象、封裝、繼承、多態)
- 35、PHP面向對象的public、private、protected之間的區別
- 36、PHP面向對象中的final和const的用法
- 37、PHP面向對象的static關鍵字
- 38、PHP中的單例模式
- 39、$this、self、parent詳解
- 40、PHP中面向對象的抽象類和抽象方法
- 41、PHP面向對象中的接口interface
- 42、PHP面向對象中的魔術方法
- 43、面向對象方法get_object_vars、is_subclass_of、interface_exists
- 44、PHP中的數學函數方法總結
- 45、PHP文件處理disk_total_space、disk_free_space、dirname、file_exis
- 46、PHP目錄操作rename和scandir
- 47、PHP操作目錄opendir、readdir、glob
- 48、PHP打開fopen、讀取fread、寫入文件fwrite
- 49、PHP文件處理file_get_contents、file_put_contents、fgetc、fgets、fg
- 50、PHP截取字符串出現亂碼的解決方法(UTF8和GBK)
- 51、PHP文件內容分頁操作,避免亂碼
- 52、PHP文件操作函數file、set_include_path、copy
- 53、PHP文件操作函數filemtime、filectime、fileatime、touch
- 54、PHP文件操作指針函數feof、ftell、fseek、rewind、fpassthru
- 55、PHP文件操作pathinfo、realpath、flock、tempnam、tmpfile
- 56、設置php.ini配置實現表單文件上傳流程
- 57、PHP將上傳到臨時文件夾的文件移動到服務器指定文件夾內
- 58、PHP+input表單實現多文件上傳
- 59、PHP通過超鏈接實現文件下載
- 60、發送header文件頭信息實現文件下載
- 61、PHP中的日期時間_時區時間戳函數使用
- 62、PHP操作COOKIE緩沖區影響COOKIE傳遞方式
- 63、PHP中SESSION定義、建立、刪除方式
- 64、PHP.INI配置文件中關于session的設置
- 65、HP中Session緩存的概念與用法
- 66、PHP自定義Session處理機制
- 67、通過MYSQL數據庫操作Session會話完整源碼類
- 68、PHP連接數據庫實現分頁代碼
- 69、HTTP緩存實現原理詳解
- 70、PHP連接數據庫實現搜索+分頁功能
- 71、PHP圖像處理之建立畫布填充顏色、打開不同圖像類型處理
- 72、PHP顏色或圖像填充及不同填充方式
- 73、PHP圖像處理之畫線&定義線樣式&寬度&風格&筆刷
- 74、PHP圖像處理:繪制色素及矩形圖
- 75、PHP圖像處理之畫圓、弧線、網站餅狀統計圖繪制
- 76、PHP圖像處理之繪制多邊行及文字繪制
- 77、PHP 圖像處理之獲得文字寬高屬性&圖片水印函數功能
- 78、PHP生成圖片驗證碼demo【OOP面向對象版本】
- 79、PHP圖像處理 圖像處理之處理文字及獲得文字尺寸屬性,imagecopymerge imagecop
- 80、替換用戶輸入的QQ表情
- 81、PHP封裝MYSQL數據庫操作類源碼
- 82、PHP與XML技術結合使用解析