PHP XML操作類DOMDocument
更新時(shí)間:2009年12月16日 23:51:42 作者:
不得不自已寫一個(gè).XML 的操作一直沒有用過.下面是自己搜集的XML操作類
DOMDocument相關(guān)的內(nèi)容.
屬性:
Attributes 存儲(chǔ)節(jié)點(diǎn)的屬性列表(只讀)
childNodes 存儲(chǔ)節(jié)點(diǎn)的子節(jié)點(diǎn)列表(只讀)
dataType 返回此節(jié)點(diǎn)的數(shù)據(jù)類型
Definition 以DTD或XML模式給出的節(jié)點(diǎn)的定義(只讀)
Doctype 指定文檔類型節(jié)點(diǎn)(只讀)
documentElement 返回文檔的根元素(可讀寫)
firstChild 返回當(dāng)前節(jié)點(diǎn)的第一個(gè)子節(jié)點(diǎn)(只讀)
Implementation 返回XMLDOMImplementation對(duì)象
lastChild 返回當(dāng)前節(jié)點(diǎn)最后一個(gè)子節(jié)點(diǎn)(只讀)
nextSibling 返回當(dāng)前節(jié)點(diǎn)的下一個(gè)兄弟節(jié)點(diǎn)(只讀)
nodeName 返回節(jié)點(diǎn)的名字(只讀)
nodeType 返回節(jié)點(diǎn)的類型(只讀)
nodeTypedValue 存儲(chǔ)節(jié)點(diǎn)值(可讀寫)
nodeValue 返回節(jié)點(diǎn)的文本(可讀寫)
ownerDocument 返回包含此節(jié)點(diǎn)的根文檔(只讀)
parentNode 返回父節(jié)點(diǎn)(只讀)
Parsed 返回此節(jié)點(diǎn)及其子節(jié)點(diǎn)是否已經(jīng)被解析(只讀)
Prefix 返回名稱空間前綴(只讀)
preserveWhiteSpace 指定是否保留空白(可讀寫)
previousSibling 返回此節(jié)點(diǎn)的前一個(gè)兄弟節(jié)點(diǎn)(只讀)
Text 返回此節(jié)點(diǎn)及其后代的文本內(nèi)容(可讀寫)
url 返回最近載入的XML文檔的URL(只讀)
Xml 返回節(jié)點(diǎn)及其后代的XML表示(只讀)
方法:
appendChild 為當(dāng)前節(jié)點(diǎn)添加一個(gè)新的子節(jié)點(diǎn),放在最后的子節(jié)點(diǎn)后
cloneNode 返回當(dāng)前節(jié)點(diǎn)的拷貝
createAttribute 創(chuàng)建新的屬性
createCDATASection 創(chuàng)建包括給定數(shù)據(jù)的CDATA段
createComment 創(chuàng)建一個(gè)注釋節(jié)點(diǎn)
createDocumentFragment 創(chuàng)建DocumentFragment對(duì)象
createElement 創(chuàng)建一個(gè)元素節(jié)點(diǎn)
createEntityReference 創(chuàng)建EntityReference對(duì)象
createNode 創(chuàng)建給定類型,名字和命名空間的節(jié)點(diǎn)
createPorcessingInstruction 創(chuàng)建操作指令節(jié)點(diǎn)
createTextNode 創(chuàng)建包括給定數(shù)據(jù)的文本節(jié)點(diǎn)
getElementsByTagName 返回指定名字的元素集合
hasChildNodes 返回當(dāng)前節(jié)點(diǎn)是否有子節(jié)點(diǎn)
insertBefore 在指定節(jié)點(diǎn)前插入子節(jié)點(diǎn)
Load 導(dǎo)入指定位置的XML文檔
loadXML 導(dǎo)入指定字符串的XML文檔
removeChild 從子結(jié)點(diǎn)列表中刪除指定的子節(jié)點(diǎn)
replaceChild 從子節(jié)點(diǎn)列表中替換指定的子節(jié)點(diǎn)
Save 把XML文件存到指定節(jié)點(diǎn)
selectNodes 對(duì)節(jié)點(diǎn)進(jìn)行指定的匹配,并返回匹配節(jié)點(diǎn)列表
selectSingleNode 對(duì)節(jié)點(diǎn)進(jìn)行指定的匹配,并返回第一個(gè)匹配節(jié)點(diǎn)
transformNode 使用指定的樣式表對(duì)節(jié)點(diǎn)及其后代進(jìn)行轉(zhuǎn)換
transformNodeToObject 使用指定的樣式表將節(jié)點(diǎn)及其后代轉(zhuǎn)換
實(shí)例獲取標(biāo)簽屬性.值:
Me.xml
<?xml version="1.0" encoding="utf-8"?>
<phplamp>
<post>
<title id="1">PHP XML處理介紹一</title>
<details>詳細(xì)內(nèi)容一</details>
</post>
<post>
<title id="2">PHP XML處理介紹二</title>
<details>詳細(xì)內(nèi)容二</details>
</post>
<post>
<title id="3">PHP XML處理介紹三</title>
<details>詳細(xì)內(nèi)容三</details>
</post>
</phplamp>
// 首先要建一個(gè)DOMDocument對(duì)象
$xml = new DOMDocument();
// 加載Xml文件
$xml->load("me.xml");
// 獲取所有的post標(biāo)簽
$postDom = $xml->getElementsByTagName("post");
// 循環(huán)遍歷post標(biāo)簽
foreach($postDom as $post){
// 獲取Title標(biāo)簽Node
$title = $post->getElementsByTagName("title");
/**
* 要獲取Title標(biāo)簽的Id屬性要分兩部走
* 1. 獲取title中所有屬性的列表也就是$title->item(0)->attributes
* 2. 獲取title中id的屬性,因?yàn)槠湓诘谝晃凰杂胕tem(0)
*
* 小提示:
* 若取屬性的值可以用item(*)->nodeValue
* 若取屬性的標(biāo)簽可以用item(*)->nodeName
* 若取屬性的類型可以用item(*)->nodeType
*/
echo "Id: " . $title->item(0)->attributes->item(0)->nodeValue . "<br />";
echo "Title: " . $title->item(0)->nodeValue . "<br />";
echo "Details: " . $post->getElementsByTagName("details")->item(0)->nodeValue . "<br /><br />";
}
下面是js讀取xml文件的代碼 ajax+xml留言
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
xmldoc.async = false;
var 舊發(fā)言 = "";
function getxml(){
try{
xmldoc.load("word.xml");
if(xmldoc.documentElement != null){
var 新發(fā)言 = xmldoc.xml;
if(新發(fā)言 != 舊發(fā)言){
舊發(fā)言 = 新發(fā)言;
var allwords = xmldoc.selectNodes("list/message");
新發(fā)言 = "";
for(var i = 0;i < allwords.length;i++){
var 數(shù)組 = allwords[i].text.split("@");
var 作者 = 數(shù)組[0];
if(作者 == 用戶名.value){
作者 = "<font color='Turquoise'>"+作者+"</font>";
}
else{
作者 = "<font color='Silver'>"+作者+"</font>";
}
var 發(fā)言= "<font color='Gold'>"+數(shù)組[1]+"</font>";
新發(fā)言 += "<div>"+作者+" "+發(fā)言+"</div>"
+"<div style='text-align:right;font-size:9px;'>"
+allwords[i].getAttribute("author").substring(0,allwords[i].getAttribute("author").lastIndexOf(".")+1)
+"* "
+allwords[i].getAttribute("time")
+"</div>";
}
words.innerHTML = 新發(fā)言;
words.scrollTop = words.scrollHeight;
}
}
}
catch(e){
}
}
var 讀取中 = false;
function getdata(){
if(!讀取中){
讀取中 = true;
getxml();
讀取中 = false;
}
setTimeout("getdata()",3000);
}
getdata();
submit.onclick = function(){
submit.disabled = true;
if(word.value != ""){
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open("GET","save.php?name=" +encodeURIComponent(用戶名.value)+ "&word="+encodeURIComponent(word.value), true);
xmlHttp.setRequestHeader("Content-Type","text/html; charset=utf-8");
xmlHttp.send(null);
word.value = "";
if(!讀取中){
讀取中 = true;
getxml();
讀取中 = false;
}
}
setTimeout("submit.disabled = false;",3000);
word.focus();
}
屬性:
Attributes 存儲(chǔ)節(jié)點(diǎn)的屬性列表(只讀)
childNodes 存儲(chǔ)節(jié)點(diǎn)的子節(jié)點(diǎn)列表(只讀)
dataType 返回此節(jié)點(diǎn)的數(shù)據(jù)類型
Definition 以DTD或XML模式給出的節(jié)點(diǎn)的定義(只讀)
Doctype 指定文檔類型節(jié)點(diǎn)(只讀)
documentElement 返回文檔的根元素(可讀寫)
firstChild 返回當(dāng)前節(jié)點(diǎn)的第一個(gè)子節(jié)點(diǎn)(只讀)
Implementation 返回XMLDOMImplementation對(duì)象
lastChild 返回當(dāng)前節(jié)點(diǎn)最后一個(gè)子節(jié)點(diǎn)(只讀)
nextSibling 返回當(dāng)前節(jié)點(diǎn)的下一個(gè)兄弟節(jié)點(diǎn)(只讀)
nodeName 返回節(jié)點(diǎn)的名字(只讀)
nodeType 返回節(jié)點(diǎn)的類型(只讀)
nodeTypedValue 存儲(chǔ)節(jié)點(diǎn)值(可讀寫)
nodeValue 返回節(jié)點(diǎn)的文本(可讀寫)
ownerDocument 返回包含此節(jié)點(diǎn)的根文檔(只讀)
parentNode 返回父節(jié)點(diǎn)(只讀)
Parsed 返回此節(jié)點(diǎn)及其子節(jié)點(diǎn)是否已經(jīng)被解析(只讀)
Prefix 返回名稱空間前綴(只讀)
preserveWhiteSpace 指定是否保留空白(可讀寫)
previousSibling 返回此節(jié)點(diǎn)的前一個(gè)兄弟節(jié)點(diǎn)(只讀)
Text 返回此節(jié)點(diǎn)及其后代的文本內(nèi)容(可讀寫)
url 返回最近載入的XML文檔的URL(只讀)
Xml 返回節(jié)點(diǎn)及其后代的XML表示(只讀)
方法:
appendChild 為當(dāng)前節(jié)點(diǎn)添加一個(gè)新的子節(jié)點(diǎn),放在最后的子節(jié)點(diǎn)后
cloneNode 返回當(dāng)前節(jié)點(diǎn)的拷貝
createAttribute 創(chuàng)建新的屬性
createCDATASection 創(chuàng)建包括給定數(shù)據(jù)的CDATA段
createComment 創(chuàng)建一個(gè)注釋節(jié)點(diǎn)
createDocumentFragment 創(chuàng)建DocumentFragment對(duì)象
createElement 創(chuàng)建一個(gè)元素節(jié)點(diǎn)
createEntityReference 創(chuàng)建EntityReference對(duì)象
createNode 創(chuàng)建給定類型,名字和命名空間的節(jié)點(diǎn)
createPorcessingInstruction 創(chuàng)建操作指令節(jié)點(diǎn)
createTextNode 創(chuàng)建包括給定數(shù)據(jù)的文本節(jié)點(diǎn)
getElementsByTagName 返回指定名字的元素集合
hasChildNodes 返回當(dāng)前節(jié)點(diǎn)是否有子節(jié)點(diǎn)
insertBefore 在指定節(jié)點(diǎn)前插入子節(jié)點(diǎn)
Load 導(dǎo)入指定位置的XML文檔
loadXML 導(dǎo)入指定字符串的XML文檔
removeChild 從子結(jié)點(diǎn)列表中刪除指定的子節(jié)點(diǎn)
replaceChild 從子節(jié)點(diǎn)列表中替換指定的子節(jié)點(diǎn)
Save 把XML文件存到指定節(jié)點(diǎn)
selectNodes 對(duì)節(jié)點(diǎn)進(jìn)行指定的匹配,并返回匹配節(jié)點(diǎn)列表
selectSingleNode 對(duì)節(jié)點(diǎn)進(jìn)行指定的匹配,并返回第一個(gè)匹配節(jié)點(diǎn)
transformNode 使用指定的樣式表對(duì)節(jié)點(diǎn)及其后代進(jìn)行轉(zhuǎn)換
transformNodeToObject 使用指定的樣式表將節(jié)點(diǎn)及其后代轉(zhuǎn)換
實(shí)例獲取標(biāo)簽屬性.值:
Me.xml
復(fù)制代碼 代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<phplamp>
<post>
<title id="1">PHP XML處理介紹一</title>
<details>詳細(xì)內(nèi)容一</details>
</post>
<post>
<title id="2">PHP XML處理介紹二</title>
<details>詳細(xì)內(nèi)容二</details>
</post>
<post>
<title id="3">PHP XML處理介紹三</title>
<details>詳細(xì)內(nèi)容三</details>
</post>
</phplamp>
復(fù)制代碼 代碼如下:
// 首先要建一個(gè)DOMDocument對(duì)象
$xml = new DOMDocument();
// 加載Xml文件
$xml->load("me.xml");
// 獲取所有的post標(biāo)簽
$postDom = $xml->getElementsByTagName("post");
// 循環(huán)遍歷post標(biāo)簽
foreach($postDom as $post){
// 獲取Title標(biāo)簽Node
$title = $post->getElementsByTagName("title");
/**
* 要獲取Title標(biāo)簽的Id屬性要分兩部走
* 1. 獲取title中所有屬性的列表也就是$title->item(0)->attributes
* 2. 獲取title中id的屬性,因?yàn)槠湓诘谝晃凰杂胕tem(0)
*
* 小提示:
* 若取屬性的值可以用item(*)->nodeValue
* 若取屬性的標(biāo)簽可以用item(*)->nodeName
* 若取屬性的類型可以用item(*)->nodeType
*/
echo "Id: " . $title->item(0)->attributes->item(0)->nodeValue . "<br />";
echo "Title: " . $title->item(0)->nodeValue . "<br />";
echo "Details: " . $post->getElementsByTagName("details")->item(0)->nodeValue . "<br /><br />";
}
下面是js讀取xml文件的代碼 ajax+xml留言
復(fù)制代碼 代碼如下:
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
xmldoc.async = false;
var 舊發(fā)言 = "";
function getxml(){
try{
xmldoc.load("word.xml");
if(xmldoc.documentElement != null){
var 新發(fā)言 = xmldoc.xml;
if(新發(fā)言 != 舊發(fā)言){
舊發(fā)言 = 新發(fā)言;
var allwords = xmldoc.selectNodes("list/message");
新發(fā)言 = "";
for(var i = 0;i < allwords.length;i++){
var 數(shù)組 = allwords[i].text.split("@");
var 作者 = 數(shù)組[0];
if(作者 == 用戶名.value){
作者 = "<font color='Turquoise'>"+作者+"</font>";
}
else{
作者 = "<font color='Silver'>"+作者+"</font>";
}
var 發(fā)言= "<font color='Gold'>"+數(shù)組[1]+"</font>";
新發(fā)言 += "<div>"+作者+" "+發(fā)言+"</div>"
+"<div style='text-align:right;font-size:9px;'>"
+allwords[i].getAttribute("author").substring(0,allwords[i].getAttribute("author").lastIndexOf(".")+1)
+"* "
+allwords[i].getAttribute("time")
+"</div>";
}
words.innerHTML = 新發(fā)言;
words.scrollTop = words.scrollHeight;
}
}
}
catch(e){
}
}
var 讀取中 = false;
function getdata(){
if(!讀取中){
讀取中 = true;
getxml();
讀取中 = false;
}
setTimeout("getdata()",3000);
}
getdata();
submit.onclick = function(){
submit.disabled = true;
if(word.value != ""){
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open("GET","save.php?name=" +encodeURIComponent(用戶名.value)+ "&word="+encodeURIComponent(word.value), true);
xmlHttp.setRequestHeader("Content-Type","text/html; charset=utf-8");
xmlHttp.send(null);
word.value = "";
if(!讀取中){
讀取中 = true;
getxml();
讀取中 = false;
}
}
setTimeout("submit.disabled = false;",3000);
word.focus();
}
您可能感興趣的文章:
- PHP使用DOMDocument類生成HTML實(shí)例(包含常見標(biāo)簽元素)
- 如何解決php domdocument找不到的問題
- PHP中使用DOMDocument來處理HTML、XML文檔的示例
- PHP讀取XML文件的方法實(shí)例總結(jié)【DOMDocument及simplexml方法】
- PHP創(chuàng)建XML的方法示例【基于DOMDocument類及SimpleXMLElement類】
- PHP基于DOMDocument解析和生成xml的方法分析
- PHP 中 DOMDocument保存xml時(shí)中文出現(xiàn)亂碼問題的解決方案
- php中DOMDocument簡(jiǎn)單用法示例代碼(XML創(chuàng)建、添加、刪除、修改)
- php基于DOMDocument操作頁(yè)面元素實(shí)例
相關(guān)文章
PHP獲取163、gmail、126等郵箱聯(lián)系人地址【已測(cè)試2009.10.10】
最近一直忙于項(xiàng)目上的QQ、MSN、郵箱(目前以實(shí)現(xiàn)163、126、gmail、sina、tom、sohu、yahoo等)通訊錄地址獲取;其中搜狐失效還需研究一下!2009-10-10瀏覽器預(yù)覽PHP文件時(shí)頂部出現(xiàn)空白影響布局分析原因及解決辦法
在編寫PHP文件過程中,發(fā)現(xiàn)在瀏覽器預(yù)覽PHP文件時(shí),頂部會(huì)出現(xiàn)一行空白,影響了頁(yè)面的布局2013-01-01簡(jiǎn)介PHP的Yii框架中緩存的一些高級(jí)用法
這篇文章主要介紹了PHP的Yii框架中緩存的一些高級(jí)用法,包括頁(yè)面緩存與會(huì)話緩存限制器等內(nèi)容,需要的朋友可以參考下2016-03-03php將文件夾打包成zip文件的簡(jiǎn)單實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猵hp將文件夾打包成zip文件的簡(jiǎn)單實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10PHP fastcgi模式上傳大文件(大約有300多K)報(bào)錯(cuò)
上傳圖片時(shí),大約有300多K,結(jié)果報(bào)了個(gè)服務(wù)器錯(cuò)誤,fastcgi默認(rèn)的請(qǐng)求大小為131072,于是在apache配置中添加了MaxRequestLen 配置就好了2014-09-09使用php 獲取時(shí)間今天明天昨天時(shí)間戳的詳解
本篇文章是對(duì)用php獲取時(shí)間今天明天昨天時(shí)間戳的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06