Gostaria de deletar um elemento XML

4 respostas
R

Ola.

Preciso deletar um elemento (tag) em um arquivo XML, ja tentei tudo que achei na net, tudo que posso fazer no meu conhecimento, estou passando o codigo para que alguêm possa analisar e me dizer onde estou errando.

public void excludeDependency(String fatherId, String childrenId) {
        Document doc = null;
        SAXBuilder builder = new SAXBuilder();
        try {
            //Abre o arquivo.
            doc = builder.build(path);
        } catch (Exception e) {
            e.printStackTrace();
        }           
        //Pega os elementos da tag root, contingencia.
        Element contingency = doc.getRootElement();
        //Lista todas as transações contidas no arquivo.
        List<Element> transaction = contingency.getChildren();
        //Percorre as transações para que seja inserido a dependência na transação com o id passado.
        for (Element element : transaction ){
            //Caso o id for igual ao id passado retorna a lista de transações.
            if (element.getAttributeValue(ManagerDependency.ID.getValue()).equals(fatherId)){
                List<Element> dependencys = element.getChildren();
                for (Element dependency : dependencys){
                    //Caso o id for igual ao id passado retorna a lista de dependências.
                    if(dependency.getAttributeValue(ManagerDependency.ID.getValue()).equals(childrenId)){
                        System.out.println("PRECISO DELETAR ESSE ELEMENTO");
                    }
                }
            }
        }
    }

Aguardo

4 Respostas

S

Você já tentou usar o “.remove”?

R

Sim…
Sei que para remover um item eu tenho que acessar o pai(parent) para depois remove-lo pois ele não se remove sozinho. quando eu tento isso ganho:
java.util.ConcurrentModificationException

C
esse erro ocorre quando vc tenta alterar uma coleção dentro de um iteração, para isso vc deve usar o iterator dessa coleção.
Iterator<Tipo> it = lista.iterator();
for(;it.hasNext(); ) #
Tipo t = it.next();
if (t == OQUEEUQUERO)
it.remove();
#
onde coloquei # substitui por chaves, meu teclado quebrou hehehe
R

Funcionou…
Valeu calel

Criado 27 de outubro de 2010
Ultima resposta 28 de out. de 2010
Respostas 4
Participantes 3