Manipular arquivos XML

6 respostas
hery

Preciso de uma orientação inicial sobre como manipular XML em java.

Estou avaliando a possibilidade de desenvolver relatórios (com JasperReport) que terão parte de seu layout dinâmico.
Exemplo: o usuário definirá as colunas desejadas, quebra de pagina.

Para isso acredito que terei de editar o arquivo xml e compilar o arquivo em tempo de execução.

Como devo fazer para manipular o arquivo XML do relatório JR???
abrir o arquivo e utilizar manipulação de String(express. regulares, etc)
ou utilizar alguma api auxiliar???

no quadro de artigos, li um pouco sobre XStream e SAX. É este o caminho???

6 Respostas

ricardolecheta

Vc pode usar o JDOM:

http://www.jdom.org/downloads/docs.html

http://www.javafree.org/news/view.jf?idNew=1066

D

aproveitando a duvida do colega ali, alguem sabe me dize por exemplo qual a diferença desses xStream, SAX, jdom, jaxb? prq acho coisa sobre eles pra manipula xml e tals, mas nao sei se um eh melhor que o otro quanto a performance, ou sei lah qualque outra coisa que os diferencie… eh mais por curiosidade mesmo, prq eu normalmente uso jaxb nas coisa que faço pra mexe com xml, mas nunca mexi cos outros ali…

valeu ai e
[]´s

ricardolecheta

sax tem a melhor performance…

o xstream tb é rapido e simples de escrever/ler xml a partir de um java bean…

alf_f2

Uma dúvida de JDom:

Tenho uma String que contém todas as tags xml denrto dela,

Preciso instancia um org.jdom.Document com o conteudo da String

Mas se passo a String no construtor ele dá erro, pois o parâmetro String no construtor na verdade seria uma URI.

Alguém tem alguma sugestão? :roll:

alf_f2

pessoal consegui,

vou postar o codigo, tive que converer a String em ByteArrayInputStream

Abraços

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;




public class s2 {

	
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
			
		   //Pegando String Fixa:
		   s2 teste = new s2();
		   String inXML = teste.getXML();
			
		   //Criamos uma classe SAXBuilder que vai processar o XML4   
		   SAXBuilder sb = new SAXBuilder();
		   
		   ByteArrayInputStream str = new ByteArrayInputStream(inXML.getBytes());

		   

		   Document JDOMdoc=null;
		   try {
			   JDOMdoc = sb.build(str);
		   } catch (JDOMException e1) {
				e1.printStackTrace();
		   } catch (IOException e1) {
				e1.printStackTrace();
		   }
	
		  
		   //Recuperamos o elemento root: <SiafisicoDocOC> 
		   Element SiafisicoDocOC = JDOMdoc.getRootElement(); 
		  
		   
		   //Recuperamos o elemento <documento>
		   Element documento = SiafisicoDocOC.getChild("documento");
   
	       System.out.println("UG:"              + documento.getChildText("UG")     );	          
	       System.out.println("Gestao:"          + documento.getChildText("Gestao") );
	       System.out.println("NumeroProcesso:"  + documento.getChildText("NumeroProcesso") );
	       System.out.println("Cidade:"          + documento.getChildText("Cidade") );
	       System.out.println("DataPrevista:"    + documento.getChildText("DataPrevista") );
	       System.out.println("Fonte:"           + documento.getChildText("Fonte") );
	       System.out.println("Logradouro:"      + documento.getChildText("Logradouro") );
	       System.out.println("Modalidade:"      + documento.getChildText("Modalidade") );
	       System.out.println("Municipio:"       + documento.getChildText("Municipio") );
	       System.out.println("Natureza:"        + documento.getChildText("Natureza") );
	       System.out.println("PTRES:"           + documento.getChildText("PTRES") );
	       System.out.println("RefLegal:"        + documento.getChildText("RefLegal") );
	       System.out.println("ServicoMaterial:" + documento.getChildText("ServicoMaterial") );
	       System.out.println("UGR:"             + documento.getChildText("UGR") );

		    
		   
	       System.out.println("fim");  

	}


...
...
...
	
}//end class
rbamartins

Cara, eu particularmene, já uzei e gostei do XStream http://xstream.codehaus.org/tutorial.html
mas tem tambem outra api que é da própria Sun que é sempre bom dar uma olhada que é a JAXB

abraços

Criado 17 de janeiro de 2007
Ultima resposta 23 de mar. de 2007
Respostas 6
Participantes 5