遍历一个xml文档,
找到具有指定元素名的节点,而这个元素的某个属性又具有特定的值。
然后删除这个节点。
保存到xml文件中。
function removenode($xmldir,$xmlname,$nodename,$Attributesname,$Attributesvalue)
{}

解决方案 »

  1.   

    我是这么做的,但出现了异常(看起来像是删除时出了异常)$doc= new DOMDocument();
    $doc->load($xmldir."/".$xmlname);$root = $doc->documentElement;
    $childlist = $root->getElementsByTagName($nodename);//$child_last=$child->item(0)->nodeName;
    $lastindex='';foreach ($childlist as $new){
      $attrs=$new->attributes;  //
      $length=$attrs->length;
      for ($i=0;$i<$length;$i++)
      {
        //这个节点的各个属性
        $tempnode=$attrs->item($i);
        if (($tempnode->nodeName==$Attributesname)&&($tempnode->nodeValue==$Attributesvalue)){
        $lastindex=$k;
        $root->removeChild($new);
        //这个节点的
        break;
        }
      }}
      

  2.   


    嗯,从新改了一下,可以了。
    function removenode($xmldir,$xmlname,$nodename,$Attributesname,$Attributesvalue){//$xml_str = file_get_contents($xmldir."/".$xmlname); //将root.xml文件中的内容读入一个字符串$doc= new DOMDocument();
    $doc->load($xmldir."/".$xmlname);$root = $doc->documentElement;
    $childlist = $root->getElementsByTagName($nodename);//$child_last=$child->item(0)->nodeName;
    $lastindex='';foreach ($childlist as $k=>$v){
      $attrs=$v->attributes;  //
      $length=$attrs->length;
      for ($i=0;$i<$length;$i++)
      {
        //这个节点的各个属性
        $tempnode=$attrs->item($i);
        if (($tempnode->nodeName==$Attributesname)&&($tempnode->nodeValue==$Attributesvalue)){
        $lastindex=$k;
        $parent=$childlist->item($k)->parentNode;
        //echo $parent->nodeType;
        //exit;    $parent->removeChild($v);
        //这个节点的
        break;
        }
      }}//保存文件
    $doc->formatOutput = true;
    $doc->saveXML();
    $doc->save($xmldir."/".$xmlname);
    }