http://www.ibm.com/developerworks/cn/opensource/os-xmldomphp/请参考这个

解决方案 »

  1.   

    chinmo   谢谢你的回复,你给的参考我早就看过了,就是针对我想通过code这个唯一的标识去查找对应的单条记录的明细,比如2008102308042019这条数据,我通过点code的连接然后查出2008102308042019,ok,[email protected]数据,这个程序处理我没有思路。可能是我自己没有变通过来,呵呵……但我现在依旧没有想到更好的解决办法!
      

  2.   

    可以考虑先把 xml 转化成 array 再遍历 会方便很多 参考 http://keithdevens.com/software/phpxml
      

  3.   


    你是说点击连接传参数过去吗?$codes = $item->getElementsByTagName( $_GET['code'] ); 
    $code = $codes->item(0)->nodeValue; $names = $item->getElementsByTagName( "name" ); 
    $name = $names->item(0)->nodeValue; 
    $name = iconv("UTF-8","GB2312",$name); $emails = $item->getElementsByTagName( "email" ); 
    $email = $emails->item(0)->nodeValue; 
    你是指这样的吗?还是什么?
      

  4.   

    应该不是很难.
    用dom操作xml.
    1 code你这个是已经得到的了,不管你用什么方式,传给想得到code对应所有数据的程序.就可以了.
    可是$_GET也可以是$_POST
    2 处理的应用程序接收传过来的唯一的值.
     查找 item这个节点,获得结点对象,遍历,如果发现与code相同的值,就返回当前item下所有其它标签的值.如果用xml解析函数将xml直接转成数组操作,可能是最普通也最直观的方式.上手也比较容易.
      

  5.   

    chinmo 对是通过参数传值,然后通过参数获得对应的数据一组item的值
      

  6.   

    xml设计的不好。把code的值换成item的属性值,就会容易的多,如:<item code='2008102308042019'>
        <name>ok</name> 
        <email>[email protected]</email>
    </item>
    $dom = new DomDocument('1.0', 'utf-8');
    $dom -> load('sis.xml');
    $xpath = new domxpath($dom);
    $path = $xpath->query($路径);/rss/channel/item[position() = 1] 返回第一个item元素的子结点
    /rss/channel/item[@eth='E2']      返回所有含有eth属性并且值为E2的子结点
    你的想法也能实现。很麻烦。得先取出所有<item>里的数据,然后比较出<code>的值等于2008102308042019的。再把其他数据取出。
    $a = $xpath->query($nodes);
    $roots  = $a->item(0)->childNodes;
    foreach ($roots as $root_value){
        $number = $root_value->nodeType;
        if($number == 1){
            $arr[] = $root_value->nodeValue;
        }
    }
    取出所有值。再比较~