myxml.xml如下<data>
<item itemid="1" image="btn1.jpg" title="图1"  />
<item itemid="2" image="btn2.jpg" title="图2"  />
<item itemid="3" image="btn3.jpg" title="图3"  />
</data>myxml.php如下$xmlurl = "myxml.xml";
$xmlstr = file_get_contents($xmlurl);
if(!$xmlstr) halt("数据读取错误,请确认文件是否存在");
$xml = new SimpleXMLElement($xmlstr);
$sliders = array();
foreach ($xml->item as $item){
$slider = array('itemid'=>'','image'=>'','title'=>'');
$slider["itemid"] = $item["itemid"];
$slider["image"] = $item["image"];
$slider["title"] = $item["title"];
$sliders[]= $slider;
}
到了实例化那一步就不能运行了。
用var_dump($xml),也无效,页面空白,没有任何错误提示。
echo $xmlstr却完全正常。。谁帮我看下是什么问题??
php5.2.6
freebsd 7.2

解决方案 »

  1.   

    myxml.xml文件中的数据有没有问题?改成下面试试:
    <?php
    $xmlurl = "myxml.xml";
    $xml = new SimpleXMLElement($xmlurl, NULL, TRUE);
    var_dump($xml);
    $sliders = array();
    foreach ($xml->item as $item){
        $slider = array('itemid'=>'','image'=>'','title'=>'');
        $slider["itemid"] = $item["itemid"];
        $slider["image"] = $item["image"];
        $slider["title"] = $item["title"];
        $sliders[]= $slider;
    }
    ?>
      

  2.   


    $str ='
    <data>
    <item itemid="1" image="btn1.jpg" title="图1"  />
    <item itemid="2" image="btn2.jpg" title="图2"  />
    <item itemid="3" image="btn3.jpg" title="图3"  />
    </data>
    ';
    $xml = new SimpleXMLElement($str);
    foreach($xml->item AS $k => $x)//可以这样取值
    {
    foreach($x->attributes() AS $key => $val)
    {
    echo $key . '=>' . $val . '<br />';
    }
    }
      

  3.   

    在windows下,也是可以取到值的。但是到了freebsd下就不行啦。
      

  4.   


    Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: I/O warning : failed to load external entity "<data> <item itemid="1" image="btn1.jpg" title="焦点图1" /> <item itemid="2" image="btn2.jpg" title="焦点图2" /> <item itemid="3" image="btn3.jpg" title="焦点图3" /> </data>" in G:\wwwroot\Projects\myxml.php on line 13
      

  5.   


    现在问题应该出在$xml = new SimpleXMLElement($str);
    这一行上
    至于下面的循环,我在windows下一样可以取到值的。