PHP通過DOM操作XML

來源:互聯網
上載者:User

PHP XML操作類DOMDocument屬性及方法
注意大小寫一定不能弄錯.

屬性:

  1. Attributes 儲存節點的屬性列表(唯讀)
  2. childNodes 儲存節點的子節點列表(唯讀)
  3. dataType 返回此節點的資料類型
  4. Definition 以DTD或XML模式給出的節點的定義(唯讀)
  5. Doctype 指定文件類型節點(唯讀)
  6. documentElement 返迴文檔的根項目(可讀寫)
  7. firstChild 返回當前節點的第一個子節點(唯讀)
  8. Implementation 返回XMLDOMImplementation對象
  9. lastChild 返回當前節點最後一個子節點(唯讀)
  10. nextSibling 返回當前節點的下一個兄弟節點(唯讀)
  11. nodeName 返回節點的名字(唯讀)
  12. nodeType 返回節點的類型(唯讀)
  13. nodeTypedValue 儲存節點值(可讀寫)
  14. nodeValue 返回節點的文本(可讀寫)
  15. ownerDocument 返回包含此節點的根文檔(唯讀)
  16. parentNode 返回父節點(唯讀)
  17. Parsed 返回此節點及其子節點是否已經被解析(唯讀)
  18. Prefix 返回名稱空間首碼(唯讀)
  19. preserveWhiteSpace 指定是否保留空白(可讀寫)
  20. previousSibling 返回此節點的前一個兄弟節點(唯讀)
  21. Text 返回此節點及其後代的常值內容(可讀寫)
  22. url 返回最近載入的XML文檔的URL(唯讀)
  23. Xml 返回節點及其後代的XML表示(唯讀)

方法:

  1. appendChild 為當前節點添加一個新的子節點,放在最後的子節點後
  2. cloneNode 返回當前節點的拷貝
  3. createAttribute 建立新的屬性
  4. createCDATASection 建立包括給定資料的CDATA段
  5. createComment 建立一個注釋節點
  6. createDocumentFragment 建立DocumentFragment對象
  7. createElement 建立一個元素節點
  8. createEntityReference 建立EntityReference對象
  9. createNode 建立給定類型,名字和命名空間的節點
  10. createPorcessingInstruction 建立操作指令節點
  11. createTextNode 建立包括給定資料的文本節點
  12. getElementsByTagName 返回指定名字的元素集合
  13. hasChildNodes 返回當前節點是否有子節點
  14. insertBefore 在指定節點前插入子節點
  15. Load 匯入指定位置的XML文檔
  16. loadXML 匯入指定字串的XML文檔
  17. removeChild 從子結點列表中刪除指定的子節點
  18. replaceChild 從子節點列表中替換指定的子節點
  19. Save 把XML檔案存到指定節點
  20. selectNodes 對節點進行指定的匹配,並返回匹配節點列表
  21. selectSingleNode 對節點進行指定的匹配,並返回第一個匹配節點
  22. transformNode 使用指定的樣式表對節點及其後代進行轉換
  23. 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屬性及方法
注意大小寫一定不能弄錯.

屬性:

  1. Attributes 儲存節點的屬性列表(唯讀)
  2. childNodes 儲存節點的子節點列表(唯讀)
  3. dataType 返回此節點的資料類型
  4. Definition 以DTD或XML模式給出的節點的定義(唯讀)
  5. Doctype 指定文件類型節點(唯讀)
  6. documentElement 返迴文檔的根項目(可讀寫)
  7. firstChild 返回當前節點的第一個子節點(唯讀)
  8. Implementation 返回XMLDOMImplementation對象
  9. lastChild 返回當前節點最後一個子節點(唯讀)
  10. nextSibling 返回當前節點的下一個兄弟節點(唯讀)
  11. nodeName 返回節點的名字(唯讀)
  12. nodeType 返回節點的類型(唯讀)
  13. nodeTypedValue 儲存節點值(可讀寫)
  14. nodeValue 返回節點的文本(可讀寫)
  15. ownerDocument 返回包含此節點的根文檔(唯讀)
  16. parentNode 返回父節點(唯讀)
  17. Parsed 返回此節點及其子節點是否已經被解析(唯讀)
  18. Prefix 返回名稱空間首碼(唯讀)
  19. preserveWhiteSpace 指定是否保留空白(可讀寫)
  20. previousSibling 返回此節點的前一個兄弟節點(唯讀)
  21. Text 返回此節點及其後代的常值內容(可讀寫)
  22. url 返回最近載入的XML文檔的URL(唯讀)
  23. Xml 返回節點及其後代的XML表示(唯讀)

方法:

  1. appendChild 為當前節點添加一個新的子節點,放在最後的子節點後
  2. cloneNode 返回當前節點的拷貝
  3. createAttribute 建立新的屬性
  4. createCDATASection 建立包括給定資料的CDATA段
  5. createComment 建立一個注釋節點
  6. createDocumentFragment 建立DocumentFragment對象
  7. createElement 建立一個元素節點
  8. createEntityReference 建立EntityReference對象
  9. createNode 建立給定類型,名字和命名空間的節點
  10. createPorcessingInstruction 建立操作指令節點
  11. createTextNode 建立包括給定資料的文本節點
  12. getElementsByTagName 返回指定名字的元素集合
  13. hasChildNodes 返回當前節點是否有子節點
  14. insertBefore 在指定節點前插入子節點
  15. Load 匯入指定位置的XML文檔
  16. loadXML 匯入指定字串的XML文檔
  17. removeChild 從子結點列表中刪除指定的子節點
  18. replaceChild 從子節點列表中替換指定的子節點
  19. Save 把XML檔案存到指定節點
  20. selectNodes 對節點進行指定的匹配,並返回匹配節點列表
  21. selectSingleNode 對節點進行指定的匹配,並返回第一個匹配節點
  22. transformNode 使用指定的樣式表對節點及其後代進行轉換
  23. 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;   } } ?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.