Galera não estou muito familiarizado com a biblioteca da nota carioca, depois de ler a documentação conseguir ter alguns avanços e já consigo realizar consultas, cancelar notas, enviar um lote contendo uma nota, mas quando tento enviar um lote com 2 RPS, os valores prevalecem o do ultimo e eu nao faço ideia de como consertar isso. segue uma rotina reduzida que gera um XML reduzido mas que serve de exemplo
EnviarLoteRpsEnvio envio = new EnviarLoteRpsEnvio();
TcLoteRps lote = new TcLoteRps();
envio.setLoteRps(lote);
envio.getLoteRps().setCnpj("10473194000104");
envio.getLoteRps().setQuantidadeRps(2);
TcLoteRps.ListaRps list = new TcLoteRps.ListaRps();
TcRps rps = new TcRps();
TcInfRps infrps = new TcInfRps();
//RPS do cliente 1
rps.setInfRps(infrps);
infrps.setId("cli1");
lote.setListaRps(list);
lote.getListaRps().getRps().add(rps);
//RPS do cliente 2
rps.setInfRps(infrps);
infrps.setId("cli2");
lote.setListaRps(list);
lote.getListaRps().getRps().add(rps);
envio.setLoteRps(lote);
StringWriter sw = new StringWriter();
JAXBContext jc = JAXBContext.newInstance(ObjectFactory.class);
Marshaller m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
m.marshal(envio, sw);
String xmlEnviNfse = sw.toString();
xmlEnviNfse = xmlEnviNfse.replace(" xmlns:ns2=\"http://www.w3.org/2000/09/xmldsig#\">",">" );
FileWriter fstream = new FileWriter(caminhoretornohomologacao+"\\nfse-ped-emitenfse.xml");
System.out.println(xmlEnviNfse);
try (BufferedWriter out = new BufferedWriter(fstream)) {
out.write(xmlEnviNfse);
}