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???
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
importjava.io.ByteArrayInputStream;importjava.io.File;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.Iterator;importjava.util.List;importorg.jdom.Document;importorg.jdom.Element;importorg.jdom.JDOMException;importorg.jdom.input.SAXBuilder;publicclasss2{/** * @param args */publicstaticvoidmain(String[]args){//Pegando String Fixa:s2teste=news2();StringinXML=teste.getXML();//Criamos uma classe SAXBuilder que vai processar o XML4 SAXBuildersb=newSAXBuilder();ByteArrayInputStreamstr=newByteArrayInputStream(inXML.getBytes());DocumentJDOMdoc=null;try{JDOMdoc=sb.build(str);}catch(JDOMExceptione1){e1.printStackTrace();}catch(IOExceptione1){e1.printStackTrace();}//Recuperamos o elemento root: <SiafisicoDocOC> ElementSiafisicoDocOC=JDOMdoc.getRootElement();//Recuperamos o elemento <documento>Elementdocumento=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