我正在用dom4j操作xml,增加,修改节点都已经完成。但是删除节点失败。我的xml是这样的:
<?xml version="1.0" encoding="gb2312"?><databaselist> 
  <database> 
    <name>中国站22</name>  
    <modifytime>2006-02-14</modifytime> 
  </database>  
  <database> 
    <name>中国站242</name>  
    <modifytime>2006-02-14</modifytime> 
  </database>  
  <database> 
    <name>242</name>  
    <modifytime>12 Feb 2006 06:33:17 GMT</modifytime> 
  </database> 
</databaselist>我具体是这样做的:public void delDatabase(XMLForm xmlForm){

   List DROList = getRootElement().elements();
   Iterator DROIter = DROList.iterator();

   while(DROIter.hasNext()){
  
      Element database = (Element)DROIter.next();

      Element e_name = database.element("name");
      Element e_modifytime = database.element("modifytime");
      if(e_name.getText().equals(xmlForm.getName())){
          //database.remove(e_name);//(1)
          //database.remove(e_modifytime);//(2)
          //getRootElement().remove(dataN);
          getRootElement().remove(database);
             //System.out.println("111111");
      }
            
  
   }
   saveDocument();
}(1)和(2)均能执行成功,但是不能删除<database></database>
我应该怎么办,谢谢!!!

解决方案 »

  1.   

    在遍历列表的时候不能删除中间的直接子元素,应该是只能跳到while循环外面删除直接子元素。
      

  2.   

    List DROList = getRootElement().elements();

    for(int i =0;i<DROList.size();i++){

    Element database = (Element)DROList.get(i);

                Element e_name = database.element("name");
                Element e_modifytime = database.element("modifytime");
                if(e_name.getText().equals(xmlForm.getName())){
                 DROList.remove(i);
                }
                
      
    }
    saveDocument();
    我自己已经解决了,谢谢!