PHP解析xml数据

PHP
Uiaoin 2019-08-16 4344

更新一下,今天发现下面的方法是可以的,能省好多事,上次没成功是因为少了一个步骤,需要先用simplexml_load_string方法,示例如下:

  1. <?php
  2. $xmlStr = '<note>
  3. <to>George</to>
  4. <from>John</from>
  5. </note>';
  6. $xml = simplexml_load_string($xmlStr);
  7. $arr = json_decode(json_encode($xml), true);
  8. print_r($arr);
  9. // 结果如下:
  10. Array
  11. (
  12. [to] => George
  13. [from] => John
  14. )

下面是比较麻烦的方法,暂时先留着,作为参考。


这两天需要解析一小段xml数据,苦于底子不好,网上百度白天,尝试了以下方法,失败了:

1、先json_encode($xml)然后再json_decode($xml, true)

2、正则,理论上是可以成功的,但比较复杂

最后选择PHP自带函数,完美实现,代码如下:

  1. // 随便来一段哈
  2. $xmls = '<note>
  3. <to>George</to>
  4. <from>John</from>
  5. </note>';
  6. // 1、创建xml解析器
  7. $parser = xml_parser_create();
  8. // 2、把XML数据解析到数组中
  9. xml_parse_into_struct($parser, $xmls, $arr);
  10. // 3、释放xml解析器
  11. xml_parser_free($parser);

打印$arr结果如下

  1. Array
  2. (
  3. [0] => Array
  4. (
  5. [tag] => NOTE
  6. [type] => open
  7. [level] => 1
  8. [value] =>
  9. )
  10. [1] => Array
  11. (
  12. [tag] => TO
  13. [type] => complete
  14. [level] => 2
  15. [value] => George
  16. )
  17. [2] => Array
  18. (
  19. [tag] => NOTE
  20. [value] =>
  21. [type] => cdata
  22. [level] => 1
  23. )
  24. [3] => Array
  25. (
  26. [tag] => FROM
  27. [type] => complete
  28. [level] => 2
  29. [value] => John
  30. )
  31. [4] => Array
  32. (
  33. [tag] => NOTE
  34. [value] =>
  35. [type] => cdata
  36. [level] => 1
  37. )
  38. [5] => Array
  39. (
  40. [tag] => NOTE
  41. [type] => close
  42. [level] => 1
  43. )
  44. )

想用什么自己拿了!