php 数组xml,php xml to array(xml转数组)

php xml to array(xml转数组)2017-12-03 21:24

前面小编分享了一篇文章《php天气预报接口》,里面抓取的内容是xml,需要将xml转换成数组。

所以今天小编就分享使用php如何将xml to array的方法。 php代码$str='<?xml version="1.0" encoding="UTF-8"?>北京10:18621%北风';

function xmlstr_to_array($xmlstr) {

$doc = new DOMDocument();

$doc->loadXML($xmlstr);

$root = $doc->documentElement;

$output = domnode_to_array($root);

$output['@root'] = $root->tagName;

return $output;

}

function domnode_to_array($node) {

$output = array();

switch ($node->nodeType) {

case XML_CDATA_SECTION_NODE:

case XML_TEXT_NODE:

$output = trim($node->textContent);

break;

case XML_ELEMENT_NODE:

for ($i=0, $m=$node->childNodes->length; $i

$child = $node->childNodes->item($i);

$v = domnode_to_array($child);

if(isset($child->tagName)) {

$t = $child->tagName;

if(!isset($output[$t])) {

$output[$t] = array();

}

$output[$t][] = $v;

}

elseif($v || $v === '0') {

$output = (string) $v;

}

}

if($node->attributes->length && !is_array($output)) { //Has attributes but isn't an array

$output = array('@content'=>$output); //Change output into an array.

}

if(is_array($output)) {

if($node->attributes->length) {

$a = array();

foreach($node->attributes as $attrName => $attrNode) {

$a[$attrName] = (string) $attrNode->value;

}

$output['@attributes'] = $a;

}

foreach ($output as $t => $v) {

if(is_array($v) && count($v)==1 && $t!='@attributes') {

$output[$t] = $v[0];

}

}

}

break;

}

return $output;

}

print_r(xmlstr_to_array($str)); 运行代码,我们将得到如下结果

Array

(

[city] => 北京

[updatetime] => 10:18

[wendu] => 6

[fengli] => 5级

[shidu] => 21%

[fengxiang] => 北风

[@root] => resp

)

希望php xml to array(xml转数组)这篇文章对小伙伴有帮助,请多多支持三体教程,当然你有什么原创文章也可以分享到这里来哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值