cps.xml
<?xml version="1.0" encoding="gb2312" ?>
<cps>
   <ad>
   <id>1</id>
   <desc>简介</desc>
  <name>12</name>
</ad>
<ad>
   <id>2</id>
   <name>服务</name>
   <desc>推广</desc>
</ad>
   ....
</cps>
           怎么取出id 中最大的值,因为我要插数据,取最大id+1才可以
                  $dom = new DOMDocument;
$dom->load('cps.xml');
$xpath = new DOMXPath($dom);
$person = $xpath->query('/cps/cps_ads/ad');
                        foreach($ids as $e){
             echo $id = $e->firstChild->nodeValue;   这个写法不行啊
             不知道怎么写法的,大哥大姐帮帮忙?

解决方案 »

  1.   

    要取ID的最大值,你肯定要解析XML文件的。
    如果文件很大,速度肯定受影响
    建议增加一个值,用来保存当前最大ID比较妥当。你的写法怎么不行?有什么错?取到的ID是什么东西?
      

  2.   

    我这里一个结果都没有输出,xml文件是有数据的
      

  3.   

    cps_ads 节点在哪里???$dom = new DOMDocument; 
    $dom->load('cps.xml'); 
    $xpath = new DOMXPath($dom); 
    $person = $xpath->query('/cps/ad/id'); foreach($person as $e){ 
       echo $id = $e->nodeValue;
    }
      

  4.   

    噢....知道错误在哪里了$dom = new DOMDocument; 
    $dom->load('cps.xml'); 
    $xpath = new DOMXPath($dom); 
    $person = $xpath->query('/cps/ad/id'); foreach($person as $e){ 
      echo $id = $e->nodeValue; 

        $id 是个对象,不能用echo郁闷啊
      

  5.   

    还是在<cps>加个属性吧<cps maxid="1234">
    每次添加时查找并更新这个maxid如果你的id是连续并且不会被删除的,那也可以查一下<ad>的数目作为最大id
      

  6.   

    噢...,jnkc你的方法还好,怎么查出<cps maxid="1234"> 
    这个值的?
      

  7.   


    $dom = new DOMDocument;
    $dom->load('cps.xml');
    $xpath = new DOMXPath($dom);
    $person = $xpath->query('/cps/ad/id');
    //本人认为数据量越大,数组速度越占优势.
    $xmlid=array();
       foreach($ids as $e){
           $xmlid[]=$e->firstChild->nodeValue;
        } 
    sort($xmlid);
    $len=count($xmlid)-1;
    echo  $xmlid[$len];