<?xml version="1.0" encoding="gb2312" ?>
<property>
<a><![CDATA[200]]></a>
<b><![CDATA[test]]></b>
<c>300</c>
</property>有以上一组数据(这个是由另一个代码生成后的结果,由于拿不到代码,只有结果),请问如果把这组XML格式的数据分解出来?注意:不是去读文件的那种操作方式。就是我在PHP通过调用一段代码,得到这个结果,存在变量“$temp1”,现在要实现的就是把$temp1中的这组数据分解出来,从而得到a=200,b=test,c=300的。

解决方案 »

  1.   

    $str = <<<TEST
    <?xml version="1.0" encoding="gb2312" ?> 
    <property> 
    <a> <![CDATA[200]]> </a> 
    <b> <![CDATA[test]]> </b> 
    <c>300 </c> 
    </property>
    TEST;$so = simplexml_load_string($str,'SimpleXMLElement', LIBXML_NOCDATA);
    foreach($so as $key=>$value)
    {
    $$key = $value;
    }
    echo $a . "<br/>" . $b . "<br/>" . $c;
      

  2.   


    $so = simplexml_load_string($temp1,'SimpleXMLElement', LIBXML_NOCDATA);
    foreach($so as $key=>$value)
    {
    $$key = $value;
    }
    echo $a . "<br/>" . $b . "<br/>" . $c;
      

  3.   

    谢谢!
    但运行后报错,提示如下:Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 2: parser error : XML declaration allowed only at the start of the document in D:\wwwroot\PHP\testnet.php on line 17
      

  4.   

    前提,数据是存到了变量$temp1中了,不是能由我们手工定义的。
      

  5.   

    这是因为你的<?xml version="1.0" encoding="gb2312" ?>前有别的字符,比如说空白字符等,
    最好trim一下.
      

  6.   

    谢谢,已解决,用trim之后就OK了。