php DOMElement操作xml文檔的例子

來源:互聯網
上載者:User
  1. /*

  2. <班級>
  3. <學生 number="101">
  4. <名字>孫悟空
  5. <名字>孫行者
  6. <年齡>123
  7. <介紹>&*$%特殊字串^&#$&
  8. <學生 number="10"2">

  9. <名字>白骨精
  10. <年齡>140
  11. <介紹>介紹內容
  12. */

複製代碼

2、php代碼

  1. /**

  2. *DOMElement XML
  3. *http://bbs.it-home.org
  4. */
  5. $xmldoc = new DOMDocument('1.0', 'UTF-8');
  6. $xmldoc->load('datas.xml');

  7. $itemsNodeList = $xmldoc->getElementsbyTagName('學生');

  8. $itemElement = $itemsNodeList->item(0);//得到第一個完整的學生資訊節點
  9. $itemChildsNodeList = $itemElement->getElementsbyTagName('名字');//得到子節點“名字”,也許有多個名字
  10. $itemChildNode = $itemChildsNodeList->item(0);//得到第一個名位元組點
  11. echo $itemChildNode->nodeValue;//輸出節點值

  12. //封裝成函數

  13. $nodeArr = array('名字', '年齡', '介紹');
  14. function getNodeVal($xmldoc, $itemsName, $nodeArr){
  15. $items = $xmldoc->getElementsByTagName($itemsName);
  16. for($i=0; $i < $items->length; $i++){
  17. $item = $items->item($i);
  18. foreach($nodeArr as $node){
  19. $data[$i][] = $item->getElementsByTagName($node)->item(0)->nodeValue;
  20. }
  21. }
  22. return $data;
  23. }

  24. $data = getNodeVal($xmldoc, '學生', $nodeArr);

  25. print_r($data);

  26. //添加節點

  27. $xmldoc = new DOMDocument('1.0', 'UTF-8');
  28. $xmldoc->load('datas.xml');
  29. $items = $xmldoc->getElementsByTagName('班級')->item(0);//根節點
  30. $student = $xmldoc->createElement('學生');//建立一個新的學生節點
  31. $stu_name = $xmldoc->createElement('名字','張三');
  32. $stu_age = $xmldoc->createElement('年齡','15');
  33. $stu_intro = $xmldoc->createElement('介紹','動手能力強且成績穩定');
  34. $items->appendChild($student);
  35. $student->appendChild($stu_name);
  36. $student->appendChild($stu_age);
  37. $student->appendChild($stu_intro);
  38. $bytes = $xmldoc->save('datas.xml');
  39. echo ($bytes)? "寫入了: $bytes 位元組" : '儲存失敗';

  40. //刪除節點

  41. $xmldoc = new DOMDocument('1.0', 'UTF-8');
  42. $xmldoc->load('datas.xml');
  43. $student = $xmldoc->getElementsByTagName('學生')->item(2);//直接找到要刪除的節點
  44. $student->parentNode->removeChild($student);//父節點的刪除方法
  45. $xmldoc->save('datas.xml');

  46. //修改節點值

  47. $student = $xmldoc->getElementsByTagName('學生')->item(2);
  48. $student->getElementsByTagName('年齡')->item(0)->nodeValue += 10;
  49. $student->setAttribute('id', '110');
  50. $xmldoc->save('datas.xml');

  51. //應用 Xpath 尋找節點

  52. $xml = new DOMDocument('1.0', 'UTF-8');

  53. $xml->load('dat.xml');
  54. $xpath = new DOMXPath($xml);
  55. $nodeList = $xpath->query('/aaa/bbb/ddd/fff');
  56. echo $nodeList->item(0)->nodeValue;

  57. //SimpleXML 類操作 xml

  58. /*
  59. 1001
  60. 200元
  61. 大明
  62. 天龍八部
  63. 1002
  64. 321元
  65. 張三
  66. 笑傲江湖
  67. 1004
  68. 182元
  69. 李四
  70. 讀者
  71. */
  72. $xml = simplexml_load_file('books.xml');
  73. $books = $xml->book;
  74. echo $books[1]->title . $books[1]['house'];//直接指向第二本書
  75. foreach($xml as $item){
  76. echo $item->title,' ',$item['house'],'
    ';
  77. }
  78. ?>

複製代碼
  • 聯繫我們

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