PHP 解析有命名空间的 XML

function parseNamespaceXml($xmlstr)
{
    $xmlstr = preg_replace('/\sxmlns="(.*?)"/', ' _xmlns="${1}"', $xmlstr);
    $xmlstr = preg_replace('/<(\/)?(\w+):(\w+)/', '<${1}${2}_${3}', $xmlstr);
    $xmlstr = preg_replace('/(\w+):(\w+)="(.*?)"/', '${1}_${2}="${3}"', $xmlstr);
    $xmlobj = simplexml_load_string($xmlstr);
    return json_decode(json_encode($xmlobj), true);
}

$xmlstr = '


  
    My Title
    My Item
    ABC
    DEF
    2009-02-12T16:53:25Z
  

';

$arr = parseNamespaceXml($xmlstr);

print_r($arr);
实际上,以上处理只是把命名空间的冒号(:)变换为下划线(_),同时把解析结果变换成数组。
数组变换用到一点小技巧,就是通过 json_encode 和 json_decode 来实现

你可能感兴趣的:(PHP)