Heim  >  Artikel  >  Backend-Entwicklung  >  php xml操作类(自定义)

php xml操作类(自定义)

WBOY
WBOYOriginal
2016-07-25 09:04:101078Durchsuche
  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
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn