有好多xml格式的数据是带有CDATA的,如果开发过微信公众号的朋友应该会有很深的感触,那么里面的内容应该如何解析呢?
假设有 一个xml文件如下:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![C DATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></M sgType> <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 [Fr omUserName] => FromUser [CreateTime] => 123456789 [MsgType] =>&nb sp;event [Event] => subscribe )
echo $obj->ToUserName; // 获取"ToUserName"对应的值
/** * 测试xml读取 cdata */ function xml() { $str = "<xml> <ToUserName><![CDATA[toU ser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <Creat eTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event>&l t;![CDATA[subscribe]]></Event> </xml>"; $obj = simplexml_load_string($str, & #39;SimpleXMLElement', LIBXML_NOCDATA); return $obj; } print_r(xml());
赶快试一下看看是不是能读出来了喵
~
评论前必须登录!
注册