| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/05/2008 09:09:54
|
nandobgi
Java Ninja
![[Avatar]](/images/avatar/45ab12afa05e563bb484781693dffc87.jpg)
Membro desde: 27/03/2006 07:27:06
Mensagens: 282
Localização: Sampa
Offline
|
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?
Obrigado
This message was edited 1 time. Last update was at 26/05/2008 14:20:21
|
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/05/2008 09:43:45
|
eduveks
GUJ Ranger
![[Avatar]](/images/avatar/bce9abf229ffd7e570818476ee5d7dde.png)
Membro desde: 19/04/2005 07:45:40
Mensagens: 831
Localização: Lisboa - Portugal
Offline
|
replace com regular expression... talvez?
|
http://www.cajuscript.org
http://eduveks.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/05/2008 10:32:41
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
uma tag não possuir um valor ela seja suprimida
Explique melhor o que você quer. Você quer que isto
se transforme nisto aqui:
ou nisto aqui:
Ou você quer que isto aqui:
se transforme nisto aqui:
?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/05/2008 10:43:38
|
nandobgi
Java Ninja
![[Avatar]](/images/avatar/45ab12afa05e563bb484781693dffc87.jpg)
Membro desde: 27/03/2006 07:27:06
Mensagens: 282
Localização: Sampa
Offline
|
Thingol seria o seu primeiro exemplo:
se transforme nisto aqui:
Quando a tag não possuir um conteudo ela deve desaparecer.
Obrigado
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/05/2008 14:19:39
|
nandobgi
Java Ninja
![[Avatar]](/images/avatar/45ab12afa05e563bb484781693dffc87.jpg)
Membro desde: 27/03/2006 07:27:06
Mensagens: 282
Localização: Sampa
Offline
|
Para aqueles que talvez encontrem o mesmo problema criei uma rotina para retirar as tags que não possuem conteudo:
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
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/07/2008 16:01:10
|
nilton.a
What is classpath?
Membro desde: 12/04/2007 18:38:45
Mensagens: 5
Offline
|
Pessoal estou com problema, não estou conseguindo ler os sub nós exemplo o logradouro o meu codigo:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ler;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
public class LerXml{
public static void main(String[] arqgv){
try {
//Aqui você informa o nome do arquivo XML.
File f = new File("c:/mural.xml");
//Criamos uma classe SAXBuilder que vai processar o XML4
SAXBuilder sb = new SAXBuilder();
//Este documento agora possui toda a estrutura do arquivo.
Document d = sb.build(f);
//Recuperamos o elemento root
Element mural = d.getRootElement();
List elements = mural.getChildren();
Iterator iterator = elements.iterator();
//Iteramos com os elementos filhos, e filhos do dos filhos
while (iterator.hasNext()) {
Element element = (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 (JDOMException ex) {
Logger.getLogger(LerXml.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/04/2009 08:37:27
|
charleib
Smalltalk
Membro desde: 22/04/2009 08:32:08
Mensagens: 3
Offline
|
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:
<endereco/>
e eu gostaria que ficasse assim:
<endereco></endereco>
|
|
|
 |
|
|