今天调试接口程序,遇到如下代码产生的问题——class节点的值丢失了。后来查了一下该函数的手册,发现需要另外加上两个参数($str,’SimpleXMLElement’, LIBXML_NOCDATA)才能避免这种情况。
<?php
header("content-type:text/html;charset=utf-8");
$str = "<?xml version='1.0' encoding='UTF-8'?>
<students>
<student>
<name>zhangsan</name>
<age>20</age>
<class><![CDATA[大三]]></class>
</student>
<student>
<name>xiaoming</name>
<age>16</age>
<class><![CDATA[高三]]></class>
</student>
</students>";
$xml = simplexml_load_string($str);
//$xml = simplexml_load_string($str,'SimpleXMLElement', LIBXML_NOCDATA);
echo "<pre>";
var_dump($xml);
输出结果:
object(SimpleXMLElement)#1 (1) {
["student"]=>
array(2) {
[0]=>
object(SimpleXMLElement)#2 (3) {
["name"]=>
string(8) "zhangsan"
["age"]=>
string(2) "20"
["class"]=>
object(SimpleXMLElement)#4 (0) {
}
}
[1]=>
object(SimpleXMLElement)#3 (3) {
["name"]=>
string(8) "xiaoming"
["age"]=>
string(2) "16"
["class"]=>
object(SimpleXMLElement)#4 (0) {
}
}
}
}