Primeiro: xml base. inventei um que tem a seguinte estrutura:
<?xml version="1.0" encoding="UTF-8"?>
<produto nome="Cartão SD" preco="9.99">
<descricao> Esse cartão é muito bom e bla bla bla
</descricao>
</produto>
Segundo: Criei um bean simples que vai conter as propriedades de meu interesse:
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;
}
}
Terceiro: Escrevi a classe que vai fazer a tradução do do xml para minha classe:
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;
}
}
Quarto:Recebo o inputStream e realizo o parsing:
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();
}
}
}
}
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...