Preciso ler um arquivo XML de lote de nota fiscal e retirar apenas o elemento NFe dele.
Preciso fazer isso para juntar o NFe com o protNFe para gerar o XML de envio para o destinatário da nota fiscal.
Como faço isso com o XStream?
Preciso ler um arquivo XML de lote de nota fiscal e retirar apenas o elemento NFe dele.
Preciso fazer isso para juntar o NFe com o protNFe para gerar o XML de envio para o destinatário da nota fiscal.
Como faço isso com o XStream?
Adicionando mais informações…
Estou tentando:
[code]XStream x = new XStream();
x.alias(“enviNFe”, TEnviNFe.class);
TEnviNFe lote = (TEnviNFe) x.fromXML(new BufferedReader(new FileReader(arq)));
System.out.println("ID do lote: " + lote.getIdLote());
[/code]
Mas está dando esse erro:
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:89)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:137)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:33)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:923)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:909)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:853)
at emissor.lib.LerLote.main(LerLote.java:51)
Caused by: com.thoughtworks.xstream.mapper.CannotResolveClassException: NFe : NFe
at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:68)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:71)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:86)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:96)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:52)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.determineType(AbstractReflectionConverter.java:347)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:208)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:162)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)[/code]
O XML é um arquivo de lote com apenas 1 nota fiscal:
<?xml version="1.0" encoding="UTF-8"?>
<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00">
<idLote>000001</idLote>
<NFe>
<infNFe Id="NFe35101002767116000186550010000000011010848149" versao="2.00">
...
</infNFe>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">...</Signature>
</NFe>
</enviNFe>
Mudando um pouco o assunto.
Como faço nesse meu código para pegar o nó inteiro (NFe) como uma String?
[code]DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db;
Document doc;
try {
db = dbf.newDocumentBuilder();
doc = db.parse(file);
doc.getDocumentElement().normalize();
System.out.println("RAIZ: " + doc.getDocumentElement().getNodeName());
NodeList lista = doc.getElementsByTagName("NFe");
for (int k = 0; k < lista.getLength(); k++) {
Node nodeNfe = lista.item(k);
// Quero pegar esse nó inteiro como um XML em texto
System.out.println("NFe:\n" + nodeNfe.getNodeName());
System.out.println("");
}
} catch (ParserConfigurationException ex) {
Logger.getLogger(LerLote.class.getName()).log(Level.SEVERE, null, ex);
} catch (SAXException ex) {
Logger.getLogger(LerLote.class.getName()).log(Level.SEVERE, null, ex);
}
[/code]
Com xstream eu não consigo colocar no objeto nem a pau!!