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

删除单个:

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。搞定