Pessoal estou montando um xml com JDOM e gostaria que quando uma tag não possuir um valor ela seja suprimida.
Pensei em montar uma rotina para percorrer todo XML usando um laço, verificando se a tag possui valor caso esteja vazia então suprima a tag.
Alguém teria uma idéia melhor?
Estou utilizando JDOM e essa foi a forma mais simples que encontrei para resolver o meu problema.
Utilizei um objeto ContentFilter para listar somente os elementos do meu arquivo XML, depois verifico se a tag corrente possuiu filhos caso sim guardo a referencia do objeto Element para remover os elementos sem texto.
A linha que possui o comando iterator.remove() foi adicionada para não ser gerada uma exception ConcurrentModificationException pois estamos modificando um Iterator enquanto percorremos o mesmo.
Valeu
Valeu
N
nilton.a
Pessoal estou com problema, não estou conseguindo ler os sub nós exemplo o logradouro o meu codigo:
publicstaticvoidmain(String[]arqgv){try{//Aqui você informa o nome do arquivo XML.Filef=newFile("c:/mural.xml");//Criamos uma classe SAXBuilder que vai processar o XML4SAXBuildersb=newSAXBuilder();//Este documento agora possui toda a estrutura do arquivo.Documentd=sb.build(f);//Recuperamos o elemento rootElementmural=d.getRootElement();Listelements=mural.getChildren();Iteratoriterator=elements.iterator();//Iteramos com os elementos filhos, e filhos do dos filhoswhile(iterator.hasNext()){Elementelement=(Element)iterator.next();System.out.println("Códido: "+element.getAttributeValue("id"));System.out.println("Prioridade: "+element.getAttributeValue("prioridade"));System.out.println("Para: "+element.getChildText("para"));System.out.println("De: "+element.getChildText("de"));System.out.println("Corpo: "+element.getChildText("corpo"));System.out.println("logradouro: "+element.getChildText("logradouro"));}}catch(JDOMExceptionex){Logger.getLogger(LerXml.class.getName()).log(Level.SEVERE,null,ex);}catch(IOExceptionex){Logger.getLogger(LerXml.class.getName()).log(Level.SEVERE,null,ex);}}
}
e o arquivo XML:
<mural>
<mensagem id=“00001” prioridade=“10”>
<para>nome de envio</para>
<de>remetente</de>
<corpo>Este e apenas um teste</corpo>
<endereco>
<logradouro>R DA ASSEMBLEIA</logradouro>
<cep>06300-000</cep>
</endereco>
</mensagem>
</mural>
se vocês me ajudarem me ajudar eu agradeço.
C
charleib
Bom dia pessoal, estou com um problema parecido com o de voces, porem no meu caso devo expandir as tags vazias, deixar como no exemplo abaixo.
Estou usando o netbeans, e JDOM, mas ele deixa as tagas vazias assim: