由于项目的需要头一编写php代码,如果读取xml。
在网上查了下,发现总是报错。
如下,我现在读取所有link节点的Title属性是可以的。但是想只读取news下面的linkTitle属性总是报错,谁能写帮忙写一个<?xml version="1.0" encoding="utf-8" ?>
<data>
<news url="http://www.aceona.com">
<link title="公司新开,全场优惠" url="http://www.163.com" img="images/bbb.jpg"/>
<link title="公司新开,全场优惠" url="http://www.163.com" img="images/ccc.jpg"/>
<link title="公司新开,全场优惠" url="http://www.163.com" img="images/ddd.jpg"/>
<link title="公司新开,全场优惠" url="http://www.163.com" img="images/eee.jpg"/>
<link title="公司新开,全场优惠" url="http://www.163.com" img="images/fff.jpg"/>
</news>
         <uli>
<link title="公司新开,全场优惠" url="http://www.163.com" img="images/ccc.jpg"/>
<link title="公司新开,全场优惠" url="http://www.163.com" img="images/ddd.jpg"/>
<link title="公司新开,全场优惠" url="http://www.163.com" img="images/eee.jpg"/>
<link title="公司新开,全场优惠" url="http://www.163.com" img="images/fff.jpg"/>         </uli>

解决方案 »

  1.   


    //以下是读取所有的link节点
    <?php
    $dom = new DOMDocument();
    if (!$dom->load('z.xml'))
    {
    echo "load books.xml failed!<br>";
    return;
    }
    $bars = $dom->getElementsByTagName('bar');foreach ($bars as $bar)
    {
     $aa = $bar->getAttribute('attr');
     echo $aa."<br />";
    }
    ?>
      

  2.   


    //以下是读取所有的link节点,上面节点名写错了
    <?php
    $dom = new DOMDocument();
    if (!$dom->load('z.xml'))
    {
    echo "load books.xml failed!<br>";
    return;
    }
    $bars = $dom->getElementsByTagName('link');foreach ($bars as $bar)
    {
     $aa = $bar->getAttribute('title');
     echo $aa."<br />";
    }
    ?>
      

  3.   

    代码没有问题。是xml文件格式的原因吧?另存为 utf-8无bom格式
      

  4.   

    xml 文件有问题 怎么读呢没有结束
     </data>
    添加上 </data> 就可以读出 title 了
      

  5.   

    这个可以的,获取所有节点下link下的Title属性是可以的,但是我只获取news下面link的Title属性就错了,我也头一回写php。<?php$dom = new DOMDocument();
    if (!$dom->load('books.xml'))
    {
    echo "load books.xml failed!<br>";
    return;
    }$foos = $dom->getElementsByTagName('foo');
    $var = $foos->item(0)->getAttribute('xmlns');echo 'var=' . $var . '<br>';
    $news=$dom->getElementsByTagName('news');
    $bars = $news->getElementsByTagName('link');foreach ($bars as $bar)
    {
     $aa = $bar->getAttribute('title');
     echo $aa."<br />";
    }
    ?>
      

  6.   


    <?php
    //以下是获取news下面的linkTitle属性
    $dom = new DOMDocument();
    if (!$dom->load('books.xml'))
    {
    echo "load books.xml failed!<br>";
    return;
    }
    $news=$dom->getElementsByTagName('news');
    $bars = $news->getElementsByTagName('link');foreach ($bars as $bar)
    {
     $aa = $bar->getAttribute('title');
     echo $aa."<br />";
    }
    ?>
      

  7.   

    没看到哥的回复? xml有错 加上</data>即可
      

  8.   


    这个是我发贴的时候掉了的,实际是有的,因为获取所有link的Title属性是好的<?xml version="1.0" encoding="utf-8" ?>
    <data>
        <news url="http://www.aceona.com">
            <link title="公司新开,全场优惠" url="http://www.163.com" img="images/bbb.jpg"/>
            <link title="公司新开,全场优惠" url="http://www.163.com" img="images/ccc.jpg"/>
            <link title="公司新开,全场优惠" url="http://www.163.com" img="images/ddd.jpg"/>
            <link title="公司新开,全场优惠" url="http://www.163.com" img="images/eee.jpg"/>
            <link title="公司新开,全场优惠" url="http://www.163.com" img="images/fff.jpg"/>
        </news>
             <uli>
            <link title="公司新开,全场优惠" url="http://www.163.com" img="images/ccc.jpg"/>
            <link title="公司新开,全场优惠" url="http://www.163.com" img="images/ddd.jpg"/>
            <link title="公司新开,全场优惠" url="http://www.163.com" img="images/eee.jpg"/>
            <link title="公司新开,全场优惠" url="http://www.163.com" img="images/fff.jpg"/>         </uli>
    </data>
      

  9.   

    你的文件是否保存的正确的utf-8格式? 我这里测试读出title 完全正常.
      

  10.   

    是的,如果不是的话,那么读所有link的Title属性也会报错,但是没报错
      

  11.   

    我现在只要读取news节点下面link的title属性。
      

  12.   


    <?php$dom = new DOMDocument();
    if (!$dom->load('books.xml'))
    {
    echo "load books.xml failed!<br>";
    return;
    }
    $news=$dom->getElementsByTagName('news');//下面这行提示错误Call to undefined method DOMNodeList::getElementsByTagName() 
    $bars = $news->getElementsByTagName('link');foreach ($bars as $bar)
    {
     $aa = $bar->getAttribute('title');
     echo $aa."<br />";
    }
    ?>
      

  13.   

    <?php
    header("content-type:text/html;chartset=utf-8");
    $dom = new DOMDocument();
    if (!$dom->load('z.xml'))
    {
    echo "load books.xml failed!<br>";
    return;
    }
    $bars = $dom->getElementsByTagName('news')->item(0);
    $bars = $bars->getElementsByTagName('link');
    foreach ($bars as $bar)
    {
     //var_dump( $bar); $aa = $bar->getAttribute('title');
     echo $aa."<br />";
     }
     
    ?>
      

  14.   

    加个 item(0),否则不是domnodelist类型
      

  15.   


    不用奇怪了,他的代码本身是正确的,只是取的是所有的title,而不是news这一级下的title.