不得不自已寫一個.XML 的操作一直沒有用過.下面是自己搜集的XML操作類
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表示(唯讀)
方法:
appendChild--->為當前節點添加一個新的子節點,放在最後的子節點後
cloneNode--->返回當前節點的拷貝
createAttribute--->建立新的屬性
createCDATASection--->建立包括給定資料的CDATA段
createComment--->建立一個注釋節點
createDocumentFragment--->建立DocumentFragment對象
createElement--->建立一個元素節點
createEntityReference--->建立EntityReference對象
createNode--->建立給定類型,名字和命名空間的節點
createPorcessingInstruction--->建立操作指令節點
createTextNode--->建立包括給定資料的文本節點
getElementsByTagName--->返回指定名字的元素集合
hasChildNodes--->返回當前節點是否有子節點
insertBefore--->在指定節點前插入子節點
Load--->匯入指定位置的XML文檔
loadXML--->匯入指定字串的XML文檔
removeChild--->從子結點列表中刪除指定的子節點
replaceChild--->從子節點列表中替換指定的子節點
Save--->把XML檔案存到指定節點
selectNodes--->對節點進行指定的匹配,並返回匹配節點列表
selectSingleNode--->對節點進行指定的匹配,並返回第一個匹配節點
transformNode--->使用指定的樣式表對節點及其後代進行轉換
transformNodeToObject--->使用指定的樣式表將節點及其後代轉換
執行個體擷取標籤屬性.值:
Me.xml
View Code
1 2 3 4 PHP XML處理介紹一 5 詳細內容一 6 7 8 PHP XML處理介紹二 9 詳細內容二 10 11 12 PHP XML處理介紹三 13 詳細內容三 14 15
View Code
1 // 首先要建一個DOMDocument對象 2 $xml = new DOMDocument(); 3 // 載入Xml檔案 4 $xml->load("me.xml"); 5 // 擷取所有的post標籤 6 $postDom = $xml->getElementsByTagName("post"); 7 // 迴圈遍曆post標籤 8 foreach($postDom as $post){ 9 // 擷取Title標籤Node 10 $title = $post->getElementsByTagName("title"); 11 /** 12 * 要擷取Title標籤的Id屬性要分兩部走 13 * 1. 擷取title中所有屬性的列表也就是$title->item(0)->attributes 14 * 2. 擷取title中id的屬性,因為其在第一位所以用item(0) 15 * 16 * 小提示: 17 * 若取屬性的值可以用item(*)->nodeValue 18 * 若取屬性的標籤可以用item(*)->nodeName 19 * 若取屬性的類型可以用item(*)->nodeType 20 */ 21 echo "Id: " . $title->item(0)->attributes->item(0)->nodeValue . "
"; 22 echo "Title: " . $title->item(0)->nodeValue . "
"; 23 echo "Details: " . $post->getElementsByTagName("details")->item(0)->nodeValue . "
"; 24 }
下面是js讀取xml檔案的代碼 ajax+xml留言
Javascript代碼
1 var xmldoc = new ActiveXObject("Microsoft.XMLDOM"); 2 xmldoc.async = false; 3 var 舊發言 = ""; 4 function getxml(){ 5 try { 6 xmldoc.load("word.xml"); 7 if (xmldoc.documentElement != null) { 8 var 新發言 = xmldoc.xml; 9 if (新發言 != 舊發言) {10 舊發言 = 新發言;11 var allwords = xmldoc.selectNodes("list/message");12 新發言 = "";13 for (var i = 0; i < allwords.length; i++) {14 var 數組 = allwords[i].text.split("@");15 var 作者 = 數組[0];16 if (作者 == 使用者名稱.value) {17 作者 = "" + 作者 + "";18 }19 else {20 作者 = "" + 作者 + "";21 }22 var 發言 = "" + 數組[1] + "";23 新發言 += "" + 作者 + " " + 發言 + "" +24 "" +25 allwords[i].getAttribute("author").substring(0, allwords[i].getAttribute("author").lastIndexOf(".") + 1) +26 "* " +27 allwords[i].getAttribute("time") +28 "";29 }30 words.innerHTML = 新發言;31 words.scrollTop = words.scrollHeight;32 }33 }34 } 35 catch (e) {36 }37 }38 39 var 讀取中 = false;40 function getdata(){41 if (!讀取中) {42 讀取中 = true;43 getxml();44 讀取中 = false;45 }46 setTimeout("getdata()", 3000);47 }48 49 getdata();50 submit.onclick = function(){51 submit.disabled = true;52 if (word.value != "") {53 var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");54 xmlHttp.open("GET", "save.php?name=" + encodeURIComponent(使用者名稱.value) + "&word=" + encodeURIComponent(word.value), true);55 xmlHttp.setRequestHeader("Content-Type", "text/html; charset=utf-8");56 xmlHttp.send(null);57 word.value = "";58 if (!讀取中) {59 讀取中 = true;60 getxml();61 讀取中 = false;62 }63 }64 setTimeout("submit.disabled = false;", 3000);65 word.focus();66 }