PHP解析带CDATA的XML方法

PHP解析带CDATA的XML方法

PHP技巧Git开源网2020-01-29 22:13:0863A+A-

有好多xml格式的数据是带有CDATA的,如果开发过微信公众号的朋友应该会有很深的感触,那么里面的内容应该如何解析呢?

假设有一个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",然后直接取对应字符串的值,php代码如下:

$obj = simplexml_load_string($str, 'SimpleXMLElement', LIBXML_NOCDATA);

或者

$obj = simplexml_load_string($str, null, LIBXML_NOCDATA);

使用print_r打印$obj的结果如下:

SimpleXMLElement Object
(
    [ToUserName] => toUser
    [FromUserName] => FromUser
    [CreateTime] => 123456789
    [MsgType] => event
    [Event] => subscribe
)
echo $obj->ToUserName; // 获取"ToUserName"对应的值
/**
* 测试xml读取cdata
*/
function xml()
{
    $str = "<xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[FromUser]]></FromUserName>
    <CreateTime>123456789</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[subscribe]]></Event>
    </xml>";
    $obj = simplexml_load_string($str, 'SimpleXMLElement', LIBXML_NOCDATA);
    return $obj;
}

print_r(xml());

赶快试一下看看是不是能读出来了喵~

点击这里复制本文地址 以上内容由Git开源网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

Git开源网_git开源代码资源网_git开源博客 © All Rights Reserved.  
文章中出现的商标及图像版权属于其合法持有人,只供传递信息之用,非商务用途。本站所上传资源,只用于交流学习所用。本站资源收集于网络以及网友投稿,其版权归原创者所有,如有侵害到你的权益,或有不妥之处,请联系我们删除,敬请谅解。Email:admin#gitoscc.com(#更换成@)
Copyright © Git开源网 All rights reserved. 黑ICP备18006154号-1 由ZBlog驱动

网站管理