Ler XML

Galera boa tarde é o seguinte , alguém sabe alguma forma de ler um XML , mais o detalhe é o seguinte sei que tem o XStream e o JAXBContext ,
minha duvida vi que i XStrem é mais facil porém o que preciso é o seguinte.
Tem um xml que tem n tag’s mais ou menos assim
<>top<>
<>a</>
<>ze</>
<>zezao</>
<>a</>
<>top</>
<>zzzzz<>
<>a</>
<>opa</>
<>okay</>
<>a</>
<>zzzz</>

eu quero ler apenas os dados da tag , como eu faço , pelo que parece todas as api de xml do java exige que mapei o xml inteiro para uma classe .

É só você usar SAX ao invés de DOM. É possível usar um SAX Parser também com JAXP. XStream eu não tenho certeza.

Tem algun exemplo usando SAX

use XPath :slight_smile:

Consegui pegar o que eu quero com o SAXBuilder , porem o Id da nf esta vindo nullo alguém sabe o por que ?

Decidir usar o XmlBeans mais não to conseguindo pegar o que quero.
exemplo compilei o leiauteNFe deu tudo certo mais não consigo chegar na informação que eu quero.

TNfeProc nfe = TNfeProc.Factory.parse(file);
nfe.getNFe().getInfNFe().getIde();

deveria funcionar mais vem null , alguém sabe por que.

assim ele printa o xml que enviei

System.out.println(nfe);
mais gostaria de pegar os objetos das respectivas tag

Estou usando o JaxB e da o seguinte erro com a nfe.
javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.portalfiscal.inf.br/nfe", local:"nfeProc"). Expected elements are <{http://www.portalfiscal.inf.br/nfe}NFe>,<{http://www.w3.org/2000/09/xmldsig#}Signature>
alguem sabe por que ?

Faltava isso:

@SuppressWarnings(“unchecked”)
public static TNfeProc getTNfeProc(String xml) throws Exception{
try {
JAXBContext context = JAXBContext.newInstance(TNfeProc.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
TNfeProc nfe = unmarshaller.unmarshal(new StreamSource(new StringReader(xml)), TNfeProc.class).getValue();
return nfe;
} catch (JAXBException ex) {
throw new Exception(ex.toString());
}
}