XML文件中的内容:
<RowData>
    <ROW VV_ID="394150" VV_DATE="20090701T13:52:00000" VV_SPEED="0" VV_OIL_VOL="0" VV_ENGINE="0" />
    <ROW VV_ID="394151" VV_DATE="20090701T13:54:00000" VV_SPEED="0" VV_OIL_VOL="0" VV_ENGINE="0" />
    <ROW VV_ID="394152" VV_DATE="20090701T13:55:00000" VV_SPEED="0" VV_OIL_VOL="0" VV_ENGINE="1" />
    <ROW VV_ID="394153" VV_DATE="20090701T13:55:00000" VV_SPEED="0" VV_OIL_VOL="0.465" VV_ENGINE="1" />
    <ROW VV_ID="394154" VV_DATE="20090701T13:56:00000" VV_SPEED="35" VV_OIL_VOL="0.478" VV_ENGINE="1" />
    <ROW VV_ID="394155" VV_DATE="20090701T13:56:00000" VV_SPEED="48" VV_OIL_VOL="0" VV_ENGINE="1" />
</RowData>方法:
public void delXMLProp(){
boolean first=true;
String ft=""; 

for (Iterator<Element> it = rows.iterator(); it.hasNext();){//此处it是RowData的子节点Row

        Element vinfo = (Element)it.next();
       
        vinfo.removeAttribute("VI_TERMINAL_ID");
        vinfo.removeAttribute("VV_ACTIVESTATE");
        vinfo.removeAttribute("VV_LONG");
        vinfo.removeAttribute("VV_LAT");
        vinfo.removeAttribute("VV_MILEAGE");
        vinfo.removeAttribute("VV_TOTALMILEAGE");
        vinfo.removeAttribute("VV_GASWASTAGE");
        vinfo.removeAttribute("VV_TOTALGASWASTAGE");
        vinfo.removeAttribute("VV_GPS");
        vinfo.removeAttribute("VV_GRAPH_TYPE");
        //vinfo.removeAttribute("VV_ID");
        vinfo.removeAttribute("VV_OIL_VOL_DEAL");
       
        if(first){
        if(Integer.parseInt(vinfo.getAttributeValue("VV_ENGINE"))!=0){
        ft=vinfo.getAttributeValue("VV_DATE");
        first=false;
       
        }else{
        System.out.println("first data is invalid!remove it!");
        vinfo.getParentElement().removeContent(vinfo);此处发生错误
        //System.out.println(vinfo.getParentElement().getName());
        //vinfo.getParentElement().removeChild(vinfo.getName());
        }
       
        }else if(Integer.parseInt(vinfo.getAttributeValue("VV_ENGINE"))==0 ||vinfo.getAttributeValue("VV_DATE")==ft){
        vinfo.getParentElement().removeContent(vinfo);
        //vinfo.getParentElement().removeChild(vinfo.getName());
        }else{
        ft=vinfo.getAttributeValue("VV_DATE");
        }
}

outputXML();
}我想将文件中Engine=“0”的子节点全部剔除,请问为什么不能用removeContent(vinfo)??

解决方案 »

  1.   

       }else if(Integer 匹配的是哪个 if
      

  2.   

      vinfo.getParentElement().removeContent(vinfo);此处发生错误 
    我觉得也是 removeNode, 而不是 removeContent,
    api 不记得了,但觉得应该是 node
      

  3.   

    to:
    }else if(Integer 匹配的是哪个 ifanswer:if(first){}
      

  4.   

    另外,vinfo是Elememt类型的,没有removeNode方法。removeNode方法应该是XMLNode类的方法
      

  5.   

    另外,vinfo是Elememt类型的,没有removeNode方法。removeNode方法应该是XMLNode类的方法
      

  6.   

    removeChild(Node oldChild) Element 的父接口是 Node, 你可以考虑用这个 node 的一个方法
      

  7.   

    vinfo.getParentElement().removeContent(vinfo)中removeContent方法要注意vinfo的索引值,每删除一个Row子元素后,后面的子元素索引值发生改变,所以以后的迭代中删除发生错误。后来,我采用了it.remove()方法达到了要求。还有,上处vinfo.getAttributeValue("VV_DATE")==ft)中改成vinfo.getAttributeValue("VV_DATE").equals(ft))