joe

PHP解析带CDATA的XML方法

XML文件,如下

 <xml>
  <ToUserName><![CDATA[toUser]]></ToUserName>
  <FromUserName><![CDATA[FromUser]]></FromUserName>
  <CreateTime>123456789</CreateTime>
  <MsgType><![CDATA[event]]></MsgType>
  <Event><![CDATA[subscribe]]></Event>
  </xml>

假设$str的内容就是上面这段XML。 
解决思路很简单:先去掉”cdata”,然后直接转化为json,然后再解析json,然后直接取对应字符串的值,代码如下:

$obj = simplexml_load_string($str, 'SimpleXMLElement', LIBXML_NOCDATA); 
$eJSON = json_encode($obj); $dJSON = json_decode($eJSON); 
$toUserName = $dJSON->ToUserName;//获取"ToUserName"对应的值


码字很辛苦,转载请注明来自朱一兵的博客《PHP解析带CDATA的XML方法》

评论