更新一下,今天发现下面的方法是可以的,能省好多事,上次没成功是因为少了一个步骤,需要先用simplexml_load_string方法,示例如下:
- <?php
- $xmlStr = '<note>
- <to>George</to>
- <from>John</from>
- </note>';
- $xml = simplexml_load_string($xmlStr);
- $arr = json_decode(json_encode($xml), true);
- print_r($arr);
- // 结果如下:
- Array
- (
- [to] => George
- [from] => John
- )
下面是比较麻烦的方法,暂时先留着,作为参考。
这两天需要解析一小段xml数据,苦于底子不好,网上百度白天,尝试了以下方法,失败了:
1、先json_encode($xml)然后再json_decode($xml, true)
2、正则,理论上是可以成功的,但比较复杂
最后选择PHP自带函数,完美实现,代码如下:
- // 随便来一段哈
- $xmls = '<note>
- <to>George</to>
- <from>John</from>
- </note>';
- // 1、创建xml解析器
- $parser = xml_parser_create();
- // 2、把XML数据解析到数组中
- xml_parse_into_struct($parser, $xmls, $arr);
- // 3、释放xml解析器
- xml_parser_free($parser);
打印$arr结果如下
- Array
- (
- [0] => Array
- (
- [tag] => NOTE
- [type] => open
- [level] => 1
- [value] =>
-
- )
- [1] => Array
- (
- [tag] => TO
- [type] => complete
- [level] => 2
- [value] => George
- )
- [2] => Array
- (
- [tag] => NOTE
- [value] =>
-
- [type] => cdata
- [level] => 1
- )
- [3] => Array
- (
- [tag] => FROM
- [type] => complete
- [level] => 2
- [value] => John
- )
- [4] => Array
- (
- [tag] => NOTE
- [value] =>
-
- [type] => cdata
- [level] => 1
- )
- [5] => Array
- (
- [tag] => NOTE
- [type] => close
- [level] => 1
- )
- )
想用什么自己拿了!