欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php DOMElement操作xml文档的例子

程序员文章站 2022-04-21 10:10:18
...
  1. /*

  2. 孙悟空名字>
  3. 孙行者名字>
  4. 123年龄>
  5. 介绍>
  6. 学生>
  7. 白骨精名字>
  8. 140年龄>
  9. 介绍内容介绍>
  10. 学生>
  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 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. ?>
复制代码