Como ler um lote em XML 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:

[code]Exception in thread “main” com.thoughtworks.xstream.converters.ConversionException: NFe : NFe : NFe : NFe
---- Debugging information ----
message : NFe : NFe
cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message : NFe : NFe
class : emissor.bean.nfe.consret.TEnviNFe
required-type : emissor.bean.nfe.consret.TEnviNFe
path : /enviNFe/NFe
line number : 1

    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!!