wiliamps 17 de fev. de 2013
Luciano_Lopes,
fiz um artigo explicativo do uso do método SAX e sua vantagem em relação ao método DOM para leitura de XML.
O artigo está no link http://www.oracle2java.blogspot.com.br/2012/08/java-leitura-de-xml-com-sax.html .
Caso tenha dúvida após ler o artigo, torne a entrar em contato.
wiliamps
sliverfrf 17 de fev. de 2013
Luciano_Lopes 17 de fev. de 2013
wiliamps:
Luciano_Lopes,
fiz um artigo explicativo do uso do método SAX e sua vantagem em relação ao método DOM para leitura de XML.
O artigo está no link [url]http://www.oracle2java.blogspot.com.br/2012/08/java-leitura-de-xml-com-sax.html[/url ].
Caso tenha dúvida após ler o artigo, torne a entrar em contato.
wiliamps
http://oracle2java.blogspot.com/
Estou tentando pegar o valor do ID mas ta vindo nulo:
SAXBuilder sb = new SAXBuilder ();
Document doc = sb . build ( f );
Element nota = doc . getRootElement ();
System . out . println ( "ID: " + nota . getAttributeValue ( "Id" ));
wiliamps 17 de fev. de 2013
Poste o conteudo do seu XML para eu verificar.
Luciano_Lopes 17 de fev. de 2013
<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
<infNFe Id="NFe35110906062933000190550010000000441739698166" versao="2.00">
<ide>
<cUF>35</cUF>
<cNF>73969816</cNF>
<natOp>VENDA DE MERCADORIA</natOp>
<indPag>1</indPag>
<mod>55</mod>
<serie>1</serie>
<nNF>44</nNF>
<dEmi>2011-09-09</dEmi>
<dSaiEnt>2011-09-09</dSaiEnt>
<tpNF>1</tpNF>
<cMunFG>3548708</cMunFG>
<tpImp>1</tpImp>
<tpEmis>1</tpEmis>
<cDV>6</cDV>
<tpAmb>2</tpAmb>
<finNFe>1</finNFe>
<procEmi>3</procEmi>
<verPr
wiliamps 17 de fev. de 2013
Seu XML está com problemas do fechamento das tags. Tem que fechar todas de maneira correta.
Olha só isso:
Devia ser assim:
wiliamps
Luciano_Lopes 17 de fev. de 2013
Ele fecha la no final, oque postei foi só o começo da nota. Se quiser te mando a nota toda para você poder testar,me passa teu email.
wiliamps 17 de fev. de 2013
Se necessário, entre em contato pelo blog.
wiliamps
wiliamps 18 de fev. de 2013
Luciano_Lopes,
para registro da solução aqui no GUJ, segue um modelo resumido para leitura do XML enviado por você.
Você tem um XML parecido com uma árvore de diretórios, por isso é mais complexo fazer funcionar, mas você vai entender com isso:
import java.io.File ;
import java.io.IOException ;
import java.util.List ;
import org.jdom2.Document ;
import org.jdom2.Element ;
import org.jdom2.JDOMException ;
import org.jdom2.input.SAXBuilder ;
public class TestaXML {
public static void main ( String [] args ) throws JDOMException , IOException {
File f = new File ( "c:/temp/NFE.xml" );
SAXBuilder sb = new SAXBuilder ();
Document doc = sb . build ( f );
Element nfe = doc . getRootElement ();
// Retorna lista com infNFE e Signature
List < Element > elements = nfe . getChildren ();
// Acessa direto infNFE(get(0)).ide(get(0)).elementos(getChildren())
List < Element > ide = elements . get ( 0 ). getChildren (). get ( 0 ). getChildren ();
System . out . println ( "Imprime IDE:" );
for ( int i = 0 ; i < ide . size (); i ++ ) {
Element ideElement = ide . get ( i );
System . out . println ( ideElement . getName () + ": " + ideElement . getValue ());
}
System . out . println ( "-------------------------------------------------" );
// Acessa direto infNFE(get(0)).emit(get(1)).elementos(getChildren())
List < Element > emit = elements . get ( 0 ). getChildren (). get ( 1 ). getChildren ();
System . out . println ( "Imprime EMIT:" );
for ( int i = 0 ; i < emit . size (); i ++ ) {
Element emitElement = emit . get ( i );
System . out . println ( emitElement . getName () + ": " + emitElement . getValue ());
}
System . out . println ( "-------------------------------------------------" );
}
}
wiliamps