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。 

1、解决思路很简单:先去掉”cdata”,然后直接转化为json,然后再解析json,然后直接取对应字符串的值,代码如下:

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

 2、使用$result = getElementByTagName("rule")读取文本,再使用str_replace()用空格替换<![CDATA[( && )]]>,最后使用trim(string,charlist)[charlist=""]删除字符串两端的空格!

posted @ 2022-10-29 13:26  mingruqi  阅读(233)  评论(0编辑  收藏  举报