2

我有一个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>

现在,我想删除一个子节点,其中 text 等于 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 文件中删除子元素。它留给我

<rurl-link/>

有什么建议么?

4

3 回答 3

5

你需要这样做:

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.

于 2011-04-13T01:28:34.453 回答
0

如果您有父元素,则可以使用removeChildremoveChildrenrurl方法删除其子元素。

于 2011-04-13T01:20:03.643 回答
0

利用removeChild()

http://download.oracle.com/javase/1.5.0/docs/api/org/w3c/dom/Node.html#removeChild(org.w3c.dom.Node )

于 2011-04-13T01:20:24.487 回答