PHP 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 使用指定的樣式表將節點及其後代轉換
<?php//讀取xml$dom=new DOMDocument('1.0');$dom->load('data.xml');$em=$dom->getElementsByTagName('videos');//最外層節點$em=$em->item(0);$items=$em->getElementsByTagName('video');//節點//如果不用讀取直接添加的話把下面這一段去掉即可foreach($items as $a){ foreach($a->attributes as $b){//$b->nodeValue;節點屬性的值$b->nodeName;節點屬性的名稱 echo $b->nodeName; echo ":"; echo $b->nodeValue; echo "<br/>"; }}//下面是往xml寫入一行新的$t=$dom->createElement('video');//<video$t->setAttribute('title','1');//<video name="data"$t->setAttribute('src','2');//<video name="data" src="2"$t->setAttribute('img','1');//<video name="data" img="1"$em->appendChild($t);//<video name="data" img="1"/>$dom->save('data.xml');?> 當時的xml文檔: <?xml version="1.0"?><videos> <video img="a" url="1" title="1" nickname="1" tag="1" vid="1" star="1"/> <video img="b" url="2" title="2" nickname="2" tag="2" vid="2" star="2"/> <video img="c" url="3" title="3" nickname="3" tag="3" vid="3" star="3"/> <video title="d" src="2" img="1"/></videos>//下面這一個檔案是後改的可以修改xml <?php$doc = new DOMDocument();$doc->load('data.xml'); //尋找 videos 節點$root = $doc->getElementsByTagName('videos'); //第一個 videos 節點$root = $root->item(0); //尋找 videos 節點下的 video 節點$userid = $root->getElementsByTagName('video'); //遍曆所有 video 節點foreach ($userid as $rootdata){ //遍曆每一個 video 節點所有屬性 foreach ($rootdata->attributes as $attrib) { $attribName = $attrib->nodeName; //nodeName為屬性名稱 $attribValue = $attrib->nodeValue; //nodeValue為屬性內容 //尋找屬性名稱為ip的節點內容 if ($attribName =='img') { //尋找屬性內容為ip的節點內容 if ($attribValue =='1') { //將屬性為img,img內容為1的修改為image; $rootdata->setAttribute('img','image'); $doc->save('data.xml'); } } }} ?>
=========================================================================
<? $xmlDoc = new DOMDocument(); $xmlDoc->load("http://localhost/xml/xml.php"); $x=$xmlDoc->getElementsByTagName('name'); for ($i=0; $i<=$x->length-1; $i++){ if(strpos($x->item($i)->nodeValue,"fang")!==false){ //判斷節點內容是否存在字元“fang”,可用於搜尋 echo $x->item($i)->parentNode->childNodes->item(1)->nodeValue; } } ?>
PHP 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 使用指定的樣式表將節點及其後代轉換
<?php//讀取xml$dom=new DOMDocument('1.0');$dom->load('data.xml');$em=$dom->getElementsByTagName('videos');//最外層節點$em=$em->item(0);$items=$em->getElementsByTagName('video');//節點//如果不用讀取直接添加的話把下面這一段去掉即可foreach($items as $a){ foreach($a->attributes as $b){//$b->nodeValue;節點屬性的值$b->nodeName;節點屬性的名稱 echo $b->nodeName; echo ":"; echo $b->nodeValue; echo "<br/>"; }}//下面是往xml寫入一行新的$t=$dom->createElement('video');//<video$t->setAttribute('title','1');//<video name="data"$t->setAttribute('src','2');//<video name="data" src="2"$t->setAttribute('img','1');//<video name="data" img="1"$em->appendChild($t);//<video name="data" img="1"/>$dom->save('data.xml');?> 當時的xml文檔: <?xml version="1.0"?><videos> <video img="a" url="1" title="1" nickname="1" tag="1" vid="1" star="1"/> <video img="b" url="2" title="2" nickname="2" tag="2" vid="2" star="2"/> <video img="c" url="3" title="3" nickname="3" tag="3" vid="3" star="3"/> <video title="d" src="2" img="1"/></videos>//下面這一個檔案是後改的可以修改xml <?php$doc = new DOMDocument();$doc->load('data.xml'); //尋找 videos 節點$root = $doc->getElementsByTagName('videos'); //第一個 videos 節點$root = $root->item(0); //尋找 videos 節點下的 video 節點$userid = $root->getElementsByTagName('video'); //遍曆所有 video 節點foreach ($userid as $rootdata){ //遍曆每一個 video 節點所有屬性 foreach ($rootdata->attributes as $attrib) { $attribName = $attrib->nodeName; //nodeName為屬性名稱 $attribValue = $attrib->nodeValue; //nodeValue為屬性內容 //尋找屬性名稱為ip的節點內容 if ($attribName =='img') { //尋找屬性內容為ip的節點內容 if ($attribValue =='1') { //將屬性為img,img內容為1的修改為image; $rootdata->setAttribute('img','image'); $doc->save('data.xml'); } } }} ?>
=========================================================================
<? $xmlDoc = new DOMDocument(); $xmlDoc->load("http://localhost/xml/xml.php"); $x=$xmlDoc->getElementsByTagName('name'); for ($i=0; $i<=$x->length-1; $i++){ if(strpos($x->item($i)->nodeValue,"fang")!==false){ //判斷節點內容是否存在字元“fang”,可用於搜尋 echo $x->item($i)->parentNode->childNodes->item(1)->nodeValue; } } ?>