Dom(Document object model)文檔-對象-模型,核心思想是把一個Xml文件看成一個對象模型,然后通過對象的方式來操作Xml文件。我們先總結出DOM對象的屬性方法,在分別用案例說明其應用!
DOMDocument 屬性:
Attributes存儲節點的屬性列表(只讀)
childNodes存儲節點的子節點列表(只讀)
dataType返回此節點的數據類型
Definition以DTD或XML模式給出的節點的定義(只讀)
Doctype 指定文檔類型節點(只讀)
documentElement返回文檔的根元素(可讀寫)
firstChild返回當前節點的第一個子節點(只讀)
Implementation返回XMLDOMImplementation對象
lastChild返回當前節點最后一個子節點(只讀)
nextSibling返回當前節點的下一個兄弟節點(只讀)
nodeName返回節點的名字(只讀)
nodeType返回節點的類型(只讀)
nodeTypedValue存儲節點值(可讀寫)
nodeValue返回節點的文本(可讀寫)
ownerDocument返回包含此節點的根文檔(只讀)
parentNode返回父節點(只讀)
Parsed 返回此節點及其子節點是否已經被解析(只讀)
Prefix 返回名稱空間前綴(只讀)
preserveWhiteSpace指定是否保留空白(可讀寫)
previousSibling返回此節點的前一個兄弟節點(只讀)
Text 返回此節點及其后代的文本內容(可讀寫)
url 返回最近載入的XML文檔的URL(只讀)
Xml 返回節點及其后代的XML表示(只讀)
DOMDocument 方法:
appendChild為當前節點添加一個新的子節點,放在最后的子節點后
cloneNode返回當前節點的拷貝
createAttribute創建新的屬性
createCDATASection創建包括給定數據的CDATA段
createComment創建一個注釋節點
createDocumentFragment創建DocumentFragment對象
createElement_x創建一個元素節點
createEntityReference創建EntityReference對象
createNode創建給定類型,名字和命名空間的節點
createPorcessingInstruction創建操作指令節點
createTextNode創建包括給定數據的文本節點
getElementsByTagName返回指定名字的元素集合
hasChildNodes返回當前節點是否有子節點
insertBefore在指定節點前插入子節點
Load 導入指定位置的XML文檔
loadXML 導入指定字符串的XML文檔
removeChild從子結點列表中刪除指定的子節點
replaceChild從子節點列表中替換指定的子節點
Save 把XML文件存到指定節點
selectNodes對節點進行指定的匹配,並返回匹配節點列表
selectSingleNode對節點進行指定的匹配,並返回第一個匹配節點
transformNode使用指定的樣式表對節點及其后代進行轉換
1、創建一個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();
?>
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");
?>
制作人:飛虎 無兄弟不編程!
=====================================================================================
歡迎加QQ群進行更多交流:305397511 專注於php、mysql、jquery以及開源框架