Maison  >  Article  >  développement back-end  >  php xml操作类(自定义)

php xml操作类(自定义)

WBOY
WBOYoriginal
2016-07-25 09:04:101042parcourir
  1. /**

  2. php xml操作类
  3. link:http://bbs.it-home.org
  4. */
  5. class requirelog
  6. {
  7. protected static $requirelog;
  8. //get ready for xml,if xml is not found ,create xml

  9. static function _initializeLog()
  10. {
  11. if(file_exists('requirelog.xml'))
  12. {
  13. self::$requirelog = DOMDocument::load('requirelog.xml');

  14. }
  15. else
  16. {
  17. self::$requirelog = new DOMDocument('1.0', 'iso-8859-1');
  18. self::$requirelog->loadXML('');
  19. self::$requirelog->save('requirelog.xml');
  20. }
  21. }
  22. //获取finish字段全部为0的所有节点
  23. public static function get_entrys()
  24. {
  25. self::_initializeLog();
  26. $entrys = self::$requirelog->getElementsByTagName('entry');
  27. $entry_arrays = array();
  28. foreach($entrys as $entry)
  29. {
  30. if($entry->getElementsByTagName('finish')->item(0)->nodeValue == 0)
  31. {
  32. $entry_array = array();
  33. $entry_array['id'] = $entry->getElementsByTagName('id')->item(0)->nodeValue;
  34. $entry_array['time'] = $entry->getElementsByTagName('time')->item(0)->nodeValue;
  35. $entry_array['operator'] = $entry->getElementsByTagName('operator')->item(0)->nodeValue;
  36. $entry_array['byoperator'] = $entry->getElementsByTagName('byoperator')->item(0)->nodeValue;
  37. $entry_array['parameters1'] = $entry->getElementsByTagName('parameters1')->item(0)->nodeValue;
  38. $entry_array['parameters2'] = $entry->getElementsByTagName('parameters2')->item(0)->nodeValue;
  39. $entry_array['parameters3'] = $entry->getElementsByTagName('parameters3')->item(0)->nodeValue;
  40. $entry_array['type'] = $entry->getElementsByTagName('type')->item(0)->nodeValue;

  41. $entry_array['module'] = $entry->getElementsByTagName('module')->item(0)->nodeValue;
  42. $entry_array['finish'] = $entry->getElementsByTagName('finish')->item(0)->nodeValue;
  43. $entry_arrays[] = $entry_array;
  44. }
  45. }
  46. return $entry_arrays;
  47. }
  48. //获取所有的节点
  49. public static function get_count_entrys()
  50. {
  51. self::_initializeLog();
  52. $entrys = self::$requirelog->getElementsByTagName('entry');
  53. $entry_arrays = array();
  54. foreach($entrys as $entry)
  55. {
  56. $entry_array = array();

  57. $entry_array['id'] = $entry->getElementsByTagName('id')->item(0)->nodeValue;
  58. $entry_array['time'] = $entry->getElementsByTagName('time')->item(0)->nodeValue;
  59. $entry_array['operator'] = $entry->getElementsByTagName('operator')->item(0)->nodeValue;
  60. $entry_array['byoperator'] = $entry->getElementsByTagName('byoperator')->item(0)->nodeValue;
  61. $entry_array['parameters1'] = $entry->getElementsByTagName('parameters1')->item(0)->nodeValue;
  62. $entry_array['parameters2'] = $entry->getElementsByTagName('parameters2')->item(0)->nodeValue;
  63. $entry_array['parameters3'] = $entry->getElementsByTagName('parameters3')->item(0)->nodeValue;
  64. $entry_array['type'] = $entry->getElementsByTagName('type')->item(0)->nodeValue;

  65. $entry_array['module'] = $entry->getElementsByTagName('module')->item(0)->nodeValue;
  66. $entry_array['finish'] = $entry->getElementsByTagName('finish')->item(0)->nodeValue;
  67. $entry_arrays[] = $entry_array;
  68. }

  69. return $entry_arrays;
  70. }
  71. //根据ID获取节点

  72. public static function get_entry($id)
  73. {
  74. self::_initializeLog();
  75. $count=count(self::get_count_entrys());
  76. if($count > 0)
  77. {
  78. $entrys = self::$requirelog->getElementsByTagName('entry');
  79. foreach($entrys as $entry)
  80. {
  81. if ($id == $entry->getElementsByTagName('id')->item(0)->nodeValue)
  82. {
  83. $entry_array = array();
  84. $entry_array['id'] = $entry->getElementsByTagName('id')->item(0)->nodeValue;
  85. $entry_array['time'] = $entry->getElementsByTagName('time')->item(0)->nodeValue;
  86. $entry_array['operator'] = $entry->getElementsByTagName('operator')->item(0)->nodeValue;
  87. $entry_array['byoperator'] = $entry->getElementsByTagName('byoperator')->item(0)->nodeValue;
  88. $entry_array['parameters1'] = $entry->getElementsByTagName('parameters1')->item(0)->nodeValue;
  89. $entry_array['parameters2'] = $entry->getElementsByTagName('parameters2')->item(0)->nodeValue;
  90. $entry_array['parameters3'] = $entry->getElementsByTagName('parameters3')->item(0)->nodeValue;
  91. $entry_array['type'] = $entry->getElementsByTagName('type')->item(0)->nodeValue;

  92. $entry_array['module'] = $entry->getElementsByTagName('module')->item(0)->nodeValue;
  93. $entry_array['finish'] = $entry->getElementsByTagName('finish')->item(0)->nodeValue;
  94. return $entry_array;
  95. }
  96. }
  97. }
  98. else
  99. return null;
  100. }
  101. //执行完用户请求,更改finsh字段

  102. public static function do_finsh($id)
  103. {
  104. self::_initializeLog();
  105. $entrys = self::$requirelog->getElementsByTagName('entry');
  106. $entry_arrays = array();
  107. foreach($entrys as $entry)
  108. {
  109. if($entry->getElementsByTagName('id')->item(0)->nodeValue == $id)
  110. {
  111. $entry->getElementsByTagName('finish')->item(0)->nodeValue = 1;
  112. }
  113. }
  114. self::$requirelog->save('requirelog.xml');

  115. }
  116. //增加新节点,$operator为操作者,$byoperator是被操作对象,$parameters1,2,3为可扩展的参数,$type为类型,$module为影响的模块

  117. static function add_entry($operator,$byoperator,$parameters1,$parameters2,$parameters3,$type,$module)
  118. {
  119. //$contents = self::$restlog->getElementsByTagName('contents');
  120. self::_initializeLog();

  121. $count=count(self::get_count_entrys());
  122. $entry = self::$requirelog->createElement('entry');

  123. $id = self::$requirelog->createElement('id');

  124. $idvalue = self::$requirelog->createTextNode($count+1);
  125. $id->appendChild($idvalue);
  126. $time = self::$requirelog->createElement('time');

  127. $timevalue = self::$requirelog->createTextNode(date("Y-m-d H:i:s",time()));
  128. $time->appendChild($timevalue);
  129. $op = self::$requirelog->createElement('operator');

  130. $opvalue = self::$requirelog->createTextNode($operator);
  131. $op->appendChild($opvalue);
  132. $bop = self::$requirelog->createElement('byoperator');

  133. $bopvalue = self::$requirelog->createTextNode($byoperator);
  134. $bop->appendChild($bopvalue);
  135. $ps1 = self::$requirelog->createElement('parameters1');

  136. $ps1value = self::$requirelog->createTextNode($parameters1);
  137. $ps1->appendChild($ps1value);
  138. $ps2 = self::$requirelog->createElement('parameters2');

  139. $ps2value = self::$requirelog->createTextNode($parameters2);
  140. $ps2->appendChild($ps2value);
  141. $ps3 = self::$requirelog->createElement('parameters3');

  142. $ps3value = self::$requirelog->createTextNode($parameters3);
  143. $ps3->appendChild($ps3value);
  144. $tp = self::$requirelog->createElement('type');
  145. $tpvalue = self::$requirelog->createTextNode($type);
  146. $tp->appendChild($tpvalue);
  147. $md = self::$requirelog->createElement('module');

  148. $mdvalue = self::$requirelog->createTextNode($module);
  149. $md->appendChild($mdvalue);
  150. $fi = self::$requirelog->createElement('finish');

  151. $fivalue = self::$requirelog->createTextNode(0);
  152. $fi->appendChild($fivalue);
  153. $entry->appendChild($id);

  154. $entry->appendChild($time);
  155. $entry->appendChild($op);
  156. $entry->appendChild($bop);
  157. $entry->appendChild($ps1);
  158. $entry->appendChild($ps2);
  159. $entry->appendChild($ps3);
  160. $entry->appendChild($tp);
  161. $entry->appendChild($md);
  162. $entry->appendChild($fi);
  163. self::$requirelog->documentElement->appendChild($entry);

  164. self::$requirelog->save('requirelog.xml');
  165. return 1;

  166. }
  167. }
  168. ?>
复制代码

2、requirelog.xml文件,参考格式如下:

  1. 1
  2. peng.zhou
  3. zxcxzcxzczxcxz
  4. cxzcxzc
  5. add_group
  6. cn_group
  7. 1
  8. 2
  9. peng.zhou
  10. sales
  11. add_member
  12. mail_group
  13. 1
复制代码


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn