This topic created in 4466 days ago, the information mentioned may be changed or developed.
当<![CDATA[]]>里面没内容的时候,用simplexml_load_string将XML转为数组,这个节点转为了一个有一个元素的数组Array ( [0] => ),不是空字符串,也不是空数组。非常费解。
在遍历这个数组操作的时候,往往会遍历进Array ( [0] => )这个数组,如何做到在将<![CDATA[]]>节点转为数组的时候对应为一个空串,而不是一个数组?
谢谢!(各位高手勿笑、勿喷……)
3 replies • 1970-01-01 08:00:00 +08:00
 |
|
1
SoloCompany Mar 17, 2014
simplexml_load_string 返回的不是数组啊,是一个封装了的对象,只是支持数组操作而已 没看出来 CDATA 节点有什么特别啊
~~~~
<?php $x = simplexml_load_string(<<<XML <x> <a> a </a> <b><![CDATA[ b ]]></b> <c><![CDATA[]]></c> </x> XML );
print_r($x);
foreach (["a","b","c"] as $key) { print_r([ val => (string) $x->$key, cnt => count($x->$key->children()), ]); }
~~~~
自己放到 CoreRunner 跑一下看看咯
|
 |
|
2
adami Mar 17, 2014
simplexml_load_string 有个可选参数LIBXML_NOCDATA
|
 |
|
3
undeadking Mar 17, 2014
该不会是在处理微信数据吧?这种情况会被解析为一个空的SimpleXMLElement对象,判定一下类型然后调用__toString()方法就是了
if ('SimpleXMLElement' == get_class($node)) { return $node->__toString(); }
|