PHP XML操作類DOMDocument

來源:互聯網
上載者:User
不得不自已寫一個.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 }
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.