Lendo o XML com JSP

Ola pessoal…td legal??
Preciso de uma ajuda…estou precisando ler um xml e exibir o resultado na página… gostaria q fosse em jsp …
Eu nao sei como fazer isso e gostaria da ajuda de você… alguem pode passar um exemplo prático…ou então um tutorial…enfim.

ou explicar como eu faço, eu consegui fazer pra ler o xml mais nao sei como exibir o resultado na pagina jsp.

http://jcoltrane.sf.net/index_pt.html

Ué, se vc já conseguiu ler o XML, basta armazenar essas informações, por exemplo em um bean, e então construir uma JSP. Se for uma JSP básica, vc poder ver exemplos de construção no Deitel…

Sim eu fiz isso para ler o xml, so nao sei se ta certo, e nao sei como enviar as informaçoes para uma pagina jsp para exibir para o cliente.

	try {

		StringBuilder xml  = new StringBuilder();

==> pagina do xml [color=red] URL url = new URL(“http://xml.mercadolivre.com.br/jm/categsXml?as_site_id=MLB”);[/color]
URLConnection conn = url.openConnection();

		BufferedReader br = new BufferedReader( new InputStreamReader( conn.getInputStream() ) );
		String linha;
	
		while ( ( linha = br.readLine() ) != null )
			xml.append(linha);
	
		br.close();
		
	} catch (Exception ex) {
		ex.printStackTrace();
	}

Cara, acho que depende então com o que vc quer dizer ler o xml. Do jeito que vc está fazendo, vc está lendo o documento xml simplesmente. O link que passei faz o parsing do xml. Se vc não sabe o que é parsing, dê uma procurada na net. Agora se realmente vc quer apenas mostrar o xml bruto no navedor, acho que basta vc setar uma página JSP e com a String que vc construiu em seu corpo. Só não sei qual o esquema para ela ignorar as tags do XML…

Ok , deixa eu começar novamente,

eu estou desenvolvendo um piloto de busca onde eu vou da um GET e ter um response de um xml de um servido de outra empresa, realmente e um parser que irei fazer, irei receber o xml e irei tratar esse Xml e exibir para o cliente como resultado da busca dele, entendeu ? e isso que quero fazer . mais to perdido, pode me da uma ajuda nisso.

Então primeira coisa: vc tem que fazer o parsing. Para isso, eu indico o JColtrane que tem tutorial em português. Mas vc pode também usar o SAX ou o Extream ou outro parser de sua preferência
Segundo: No processo de parsing vc vai setar as propriedade de uma classe sua, poderia ser um bean com getters e setter dos seus atributos. Assim, vc vai ter que conhecer a estrutura do XML que vc vai fazer o parsing. Nesse processo, vc vai setando as propriedade de uma instancia de seu bean.
Terceiro: com a instancia do Bean possuindo todas suas propriedades setadas, vc usa para mostrar na sua página JSP ou em qualquer outro tipo de interface, até mesmo swing…
A parte do parser eu posso te ajudar bastante, basta vc me dizer qual a estrutura do XML. Pelo que pude ver, o XML trata das caracteristicas de um produto…

Sim , trata sim, o xml e esse que esta no codigo, do mercado livre. entao vamos la, e muito obrigado por me ajudar. bom, e isso que ti falei, vo receber esse xml, e disponibilizar para o cliente em uma pagina jsp,

1º como eu recebo esse xml ? e por esse codigo acima que mostrei. vc teria exemplo.

2º como eu disponibilizo isso no jsp. ?

=D

A como eu add o JColtrane no meu projeto, tem que instalar, vei o jar. e so add no classpath. ou tem mais coisa.

Baixa ele, dezipa e dentro dele tem um jar chamado JColtrane. Basta usar o Jar. Tem tb o código fonte, mas no seu caso precisa só do jar mesmo…

Então, vc precisa conhecer a estrutura do XML, quais são seu elementos, os atributos de seus elementos e etc. Pega um xml deles e coloca aqui de exemplo. Será que eles fornecem uma documentação sobre o XML?

Bom esse a uma parte dele, pq nao da pra colocar tudo pq e muito grande.

[code]<?xml version="1.0" encoding="ISO-8859-1" ?>

  • Copyright © 1999-2008 MercadoLibre S.A. http://www.mercadolivre.com.br/jm/categsXml?as_site_id=MLB
  • [/code]

Vou construir um exemplo didático e já posto aqui…

opss, desculpe, vamos começar di novo
vamos usar esse

[code]

<?xml version="1.0" encoding="UTF-8"?>
  <line> 

        <property  mandatory="true" > 

        body of the property 

        </property > 

  </line> 

[/code]

agora esse xml sera mandado por uma url de um servido de outra empresa onde vou receber e tratalo. como ficaria.

Primeiro: xml base. inventei um que tem a seguinte estrutura:

[code]<?xml version="1.0" encoding="UTF-8"?>

Esse cartão é muito bom e bla bla bla [/code]

Segundo: Criei um bean simples que vai conter as propriedades de meu interesse:

[code]public class Produto {
private String nome;
private String descricao;
private float preco;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public float getPreco() {
return preco;
}
public void setPreco(float preco) {
this.preco = preco;
}

}[/code]

Terceiro: Escrevi a classe que vai fazer a tradução do do xml para minha classe:

[code]public class LeitorXML {
private Produto produto;

public LeitorXML(){
	produto=new Produto();
}

@StartElement(tag="produto")
private void lerNomeEPreco(@Attribute("nome") String nome,@Attribute("preco") Float preco){
	produto.setNome(nome);
	produto.setPreco(preco);
}

@EndElement(tag="descricao")
private void lerDescricao(@Body(tab=false) String descricao){
	produto.setDescricao(descricao);
}

public Produto getProduto(){
	return produto;
}

}
[/code]

Quarto:Recebo o inputStream e realizo o parsing:

[code]public class LeitorXMLTeste {

/**
 * @param args
 */
public static void main(String[] args) {
	SAXParser parser=null;
	try {
		parser= SAXParserFactory.newInstance().newSAXParser();
	} catch (ParserConfigurationException e) {
		e.printStackTrace();
	} catch (SAXException e) {
		e.printStackTrace();
	}

	File file=new File("D:\\workspace\\Teste\\src\\produto.xml");
	if(parser!=null){
		InputSource input=new InputSource(file.getAbsolutePath());//aqui vc pode passar o seu inputStream como parametro
		try {
			LeitorXML leitor= new LeitorXML();
			parser.parse(input,new JColtraneXMLHandler(leitor));
			Produto p=leitor.getProduto();
			System.out.println("nome: "+p.getNome());
			System.out.println("preço: "+p.getPreco());
			System.out.println("descricao: "+p.getDescricao());
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

}
[/code]

Repare entao que eu recuperei os dados do produto e imprimi na tela. Em vez de imprimir na tela, vc poderia colocar em sua pagina. Eu usei um arquivo, mas vc pode usar um inputStream no InputSource.
Vê se vc consegue estender esse exemplo para o que vc quer fazer…

AH, qdo rodei o teste, obtive o seguinte resultado:

nome: Cartão SD
preço: 9.99
descricao: Esse cartão é muito bom e bla bla bla

que é exatamente o que eu queria…

Entendi sim hehehehe, mais lembrando que eu vou receber esses xml de uma url. eu posso passar a url no lugar do arquivo onde esta o documento de xml. ?

url acho que nao, mas ele aceita o InputStream, entao vc passa o InputStream do jeito que vc tava fazendo no início do post…
Deixei essa parte até comentada na classe LeitorXMLTest…

blz, vo tentar fazer assim e vo ver no que da e ja falo, detalhe, o jcoltrane eu nao consegui colocar pra rodar nao, eu fui la no run e add o jar dele no classpath, e nao fez nada nao mudar, absolutamente, nada, tem algo mais a se fazer para instalar.

heheheheh, foi vc que desenvolveu o Jcoltrane , legal, parabens, me parece muito bom, mais como eu faço pra criar um projeto ou documento coisa parecida com ele , para que eu possa desenvolver essa aplicaçao que vc ta me explicando. abraços.