php DOMElement操作xml文档的例子

原创
2016-07-25 09:00:04 586浏览
  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. ?>

复制代码


声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
上一条:php URL rewrite路径重写一例 下一条:PHP 获取文件路径(__FILE__的妙用)

相关文章

查看更多