当前位置:Gxlcms > PHP教程 > phpDOMElement操作xml文档的例子

phpDOMElement操作xml文档的例子

时间:2021-07-01 10:21:17 帮助过:32人阅读

  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. ?>

人气教程排行