dom4j删除节点的问题??????????

llller 2011-07-24 09:26:46
public void delNode(String listName, String nodeName) throws XMLException, DocumentException, IOException{
String filePath = ".....";
String path = filePath + listName + ".xml";
File file = checkAndLoad(path);

SAXReader read = new SAXReader();
Document doc = read.read(file);
Element e = doc.getRootElement();
List<Element> list = e.elements(nodeName);

for(Iterator<Element> it = list.iterator(); it.hasNext();){
if(it.next().attributeValue("name").equalsIgnoreCase(nodeName)){
it.remove();
}
}
saveAndClose(doc, file);
}
为什么删不掉呢?????
...全文
130 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
llller 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 brightyq 的回复:]
刚说的有点问题。
对list操作是对xml 文件的操作。
但remove的时候,不要用list.remove。用 e.remove(it.next())
[/Quote]
用e.remove(it.next())会报NoSuchElementException..
要先Element ee = it.next();再e.remove(ee);
就ok..
brightyq 2011-07-25
  • 打赏
  • 举报
回复
刚说的有点问题。
对list操作是对xml 文件的操作。
但remove的时候,不要用list.remove。用 e.remove(it.next())
brightyq 2011-07-25
  • 打赏
  • 举报
回复

List<Element> list = e.elements(nodeName);

for(Iterator<Element> it = list.iterator(); it.hasNext();){
if(it.next().attributeValue("name").equalsIgnoreCase(nodeName)){
it.remove();
}


楼主,这里remove,是remove掉list里的Element
xml生成的各结点放在一个list中,remove的时候是remove这个list,而不是remove xml文件的结点。
feifeikub 2011-07-25
  • 打赏
  • 举报
回复

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();


希望对你有帮助

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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