我有一个xml结构,如下所示:
<rurl modify="0" children="yes" index="8" name="R-URL"> <status>enabled</status> <rurl-link priority="3">http</rurl-link> <rurl-link priority="5">http://localhost:80</rurl-link> <rurl-link priority="4">abc</rurl-link> <rurl-link priority="3">b</rurl-link> <rurl-link priority="2">a</rurl-link> <rurl-link priority="1">newlinkkkkkkk</rurl-link> </rurl>
现在,我要删除一个文本等于http的子节点。目前,我正在使用此代码:
while(subchilditr.hasNext()){ Element subchild = (Element)subchilditr.next(); if (subchild.getText().equalsIgnoreCase(text)) { message = subchild.getText(); update = "Success"; subchild.removeAttribute("priority"); subchild.removeContent(); }
但这并没有完全从xml文件中删除sub元素。它让我
<rurl-link/>
有什么建议?
您需要这样做:
List<Element> elements = new ArrayList<Element>(); while (subchilditr.hasNext()) { Element subchild = (Element) subchilditr.next(); if (subchild.getText().equalsIgnoreCase(text)) { elements.add(subchild); } } for (Element element : elements) { element.getParent().removeContent(element); }
如果您尝试删除循环内的元素,则会得到一个ConcurrentModificationException。
ConcurrentModificationException