dom4j删除节点问题!

yonghedawang 2006-02-12 02:43:29
我正在用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>
我应该怎么办,谢谢!!!
...全文
680 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yonghedawang 2006-02-13
  • 打赏
  • 举报
回复
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();


我自己已经解决了,谢谢!
bionergy 2006-02-13
  • 打赏
  • 举报
回复
在遍历列表的时候不能删除中间的直接子元素,应该是只能跳到while循环外面删除直接子元素。

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧