文章目錄
上一節,講了Xml檔案基本文法及元素,實體及Dtd約束技術,下面就正式進入PHP的Xml編程使用PHP技術對Xml檔案進行操作
常用的有以下三種技術:
1、PHP dom
2、PHP結合XPath操作Xml
3、Simplexml技術
首先來說明Dom
Dom(Document object model)文檔-對象-模型,核心思想是把一個Xml檔案,看成一個物件模型,然後通過對象的方式來操作Xml檔案。
1、建立一個Xml檔案 在學習過程中發現,自己直接編寫的Xml檔案,在調用Xml函數的時候總是不能被正確的識別,所以先用PHP來建立一個Xml檔案,再進行操作,直接看代碼
<?php //執行個體化一個DomDocument對象 $dom = new DomDocument('1.0', 'UTF-8'); //如果檔案不存在就建立一個 if (!file_exists("xml_test.xml")){ header("Content-Type: text/plain"); $root = $dom->createElement("class"); $dom->appendChild($root); $dom->save("xml_test.xml"); } else{ $dom->load("xml_test.xml"); } print $dom->saveXML();?>在網頁上開啟,執行會建立個xml_test.xml檔案(這裡有個問題是,根目錄的名字不能使用漢字,具體沒有明白如何去設定?知道的朋友給指點下,非常感謝!)
<?xml version="1.0" encoding="UTF-8"?><class/>
2、增加元素
<?php //addElementsxml.php $dom = new DOMDocument("1.0", "UTF-8"); $dom->load("xml_test.xml"); $root_class = $dom->getElementsByTagName("class"); $i = 0; // for($i = 0;$i < 4; $i++){ $root_class_node = $root_class->item($i); $stu_node=$dom->createElement("student"); $stu_node->setAttribute("xingbie", "man"); $stu_node_name=$dom->createElement("name","name".$i); //設定屬性 $stu_node_name->setAttribute("hel", "23"); $stu_node_age=$dom->createElement("age","21"); $stu_node_introduce=$dom->createElement("introduce","1111"); $stu_node->appendChild($stu_node_name); $stu_node->appendChild($stu_node_age); $stu_node->appendChild($stu_node_introduce); $root_class_node->appendChild($stu_node); // } $dom->save("xml_test.xml"); print $dom->saveXML();?>3、遍曆元素
<?php //getNode.php //解析一個檔案的步驟 //1建立一個對象,表示文檔 $dom = new DOMDocument("1.0", "UTF-8"); //2制定載入那個Xml,解析那個檔案 $dom->load("xml_test.xml"); //3 擷取你關新節點 $stu_nodes = $dom->getElementsByTagName("student"); for ($i=0;$i<$stu_nodes->length;$i++){ //取出每個學生 $stu_node = $stu_nodes->item($i); for($i=0;$i<$stu_node->childNodes->length;$i++){ echo $stu_node->childNodes->item($i)->nodeValue; echo "<br/>"; } }?>4、刪除元素
<?php //解析一個檔案的步驟 //1建立一個對象,表示文檔 $dom = new DOMDocument("1.0", "UTF-8"); //2制定載入那個Xml,解析那個檔案 $dom->load("xml_test.xml"); //3 擷取你關新節點 $stu_nodes = $dom->getElementsByTagName("student"); $stu_node=$stu_nodes->item($stu_nodes->length -1); $stu_node->parentNode->removeChild($stu_node); $dom->save("xml_test.xml"); ?>
5、修改元素屬性
<?php //1建立一個對象,表示文檔 $dom = new DOMDocument("1.0", "UTF-8"); //2制定載入那個Xml,解析那個檔案 $dom->load("xml_test.xml"); //找到這個學生 $stus=$dom->getElementsByTagName("age")->item(0); $stus->nodeValue=100; $dom->save("xml_test.xml"); ?>
上面介紹了基本DOM操作,增刪改查,下一節將有具體的執行個體來操作參考資料:http://www.php.net/manual/en/class.domdocument.php