php实现xml转换数组的方法示例

  1. <?php
  2. $info= '<?xml version="1.0"encoding="utf-8"?>
  3. <data>
  4. <GeocoderSearchResponse>
  5. <status>OK</status>
  6. <result>
  7. <location>
  8. <lat>39.94921</lat>
  9. <lng>116.463619</lng>
  10. </location>
  11. <precise>0</precise>
  12. <confidence>50</confidence>
  13. <level>脚本</level>
  14. </result>
  15. </GeocoderSearchResponse>
  16. <GeocoderSearchResponse>
  17. <status>OK</status>
  18. <result>
  19. <location>
  20. <lat>39</lat>
  21. <lng>116</lng>
  22. </location>
  23. <precise>0</precise>
  24. <confidence>50</confidence>
  25. <level>脚本123</level>
  26. </result>
  27. </GeocoderSearchResponse>
  28. </data>';
  29. $xml= simplexml_load_string($info);
  30. functionxml2array($xmlobject) {
  31. if($xmlobject) {
  32. foreach((array)$xmlobjectas$k=>$v) {
  33. $data[$k] = !is_string($v) ? xml2array($v) :$v;
  34. }
  35. return$data;
  36. }
  37. }
  38. $data= xml2array($xml);
  39. var_dump($data);
  40. ?>

运行结果如下:

  1. array(1) {
  2. ["GeocoderSearchResponse"]=>
  3. array(2) {
  4. [0]=>
  5. array(2) {
  6. ["status"]=>
  7. string(2)"OK"
  8. ["result"]=>
  9. array(4) {
  10. ["location"]=>
  11. array(2) {
  12. ["lat"]=>
  13. string(8)"39.94921"
  14. ["lng"]=>
  15. string(10)"116.463619"
  16. }
  17. ["precise"]=>
  18. string(1)"0"
  19. ["confidence"]=>
  20. string(2)"50"
  21. ["level"]=>
  22. string(6)"脚本"
  23. }
  24. }
  25. [1]=>
  26. array(2) {
  27. ["status"]=>
  28. string(2)"OK"
  29. ["result"]=>
  30. array(4) {
  31. ["location"]=>
  32. array(2) {
  33. ["lat"]=>
  34. string(2)"39"
  35. ["lng"]=>
  36. string(3)"116"
  37. }
  38. ["precise"]=>
  39. string(1)"0"
  40. ["confidence"]=>
  41. string(2)"50"
  42. ["level"]=>
  43. string(9)"脚本123"
  44. }
  45. }
  46. }
  47. }