Removendo elemento em XML, ajuda

2 respostas
rtva

Ola,
Ja procurei e nada me ajudou a remover um elemento usando o JDOM, aguém poderia me ajudar?

public void removeElement(String elementId){

		org.jdom.Document doc = null;
		SAXBuilder builder = new SAXBuilder();
		try {
			doc = builder.build("C:\test\arquivo.xml");
		} catch (Exception e) {
			e.printStackTrace();
		}           

		org.jdom.Element agenda = doc.getRootElement();
		List<org.jdom.Element> contatos = agenda.getChildren();
		for (org.jdom.Element element : contatos ){
			if (element.getAttributeValue("id").equals(elementId)){
				//ACHEI O ELEMENTO AGORA PRECISO REMOVE-LO
			}
		}
	}

2 Respostas

nel

Oi!

Use o pacote org.w3c.dom…é um conselho.
Sobre sua dúvida, já usou o método:

element.removeChild(node);

Abraços.

JoaoBluSCBR

1 - Acho que tem algo errado na sua comparação pois
no teu código elementId é String e vc faz:

if (element.getAttributeValue("id").equals(elementId)){

Faça teste, mas o equals compara objetos e (element.getAttributeValue(“id”) nunca vai ser igual a elementId.

A menos que eu esteja enganado, acho que vc devia usar equalsIgnoreCase para comparar o texto dos dois.

2 - Se contatos é uma lista de objetos e você quer retirar um deles, use simplesmente o método remove da List e
depois recrie o xml novamente.

Nenhum método funciona se você não recriar o xml depois. Pois mesmo remveChild aconselhado em outro post,
só vai tirar o node da cópia em memória. O arquivo xml continuará contendo o node original.

Criado 5 de julho de 2011
Ultima resposta 5 de jul. de 2011
Respostas 2
Participantes 3