JAVA dom4j 删除某节点的所有属性值

网上都是删除某一个属性的教程。这里简单记录一下删除全部属性时遇到的坑。

删除单个:

Element root=document.getRootElement();
Attribute attribute=root.attribute("name");// 属性名name

删除所有属性:

// 错误做法一
Element root=document.getRootElement(); 
for(Iterator it=root.attributeIterator();it.hasNext();){ 
 Attribute attribute = (Attribute) it.next(); 
 root.remove(attribute);
}

上面的做法会报错:

Exception in thread "main" java.util.ConcurrentModificationException

其实也很好理解,你一边在遍历,一边在删除,肯定会报错。

于是换了个思路:

// 错误做法二
Element element = (Element)node;
for (int i = 0; i < element.attributeCount(); i++){
    element.remove(element.attribute(i));
}

结果是不报错了,但最后打印出来发现删除的不干净。

还是犯了跟上面一样的问题,一边删,还一边遍历。

最终做法,先确定总数,然后每次都删除第一个,直到删除完成:

//  正确做法
Element element = (Element)node;
int attrCount = element.attributeCount();
for (int i = 0; i < attrCount;i++){
    element.remove(element.attribute(0));
}

OK。搞定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值