Troquei isso
final JAXBContext context = JAXBContext.newInstance("br.com.webservicenfse.nfse.ws.bind");
Por isso
final JAXBContext context = JAXBContext.newInstance(EnviarLoteRpsEnvio.class);
Adicionei algumas propriedades ao marshaller
//importante não formatar o XML de saída para não invalidar a assinatura digital
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.FALSE);
E aparentemente esses erros acima sumiram. Mas eu ainda estou com dúvidas…
Digamos que eu tenha um arquivo xml de lotes rps’s com as tags abaixo:
<?xml version="1.0" encoding="utf-8"?>
<EnviarLoteRpsEnvio xmlns="http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd">
...
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
</Signature>
...
</EnviarLoteRpsEnvio>
Faço o unmarshalling do lado do cliente, envio os dados para o servidor, faço o marshalling do lado do servidor e tento validar os dados. Acontece que a saída do marshalling no servidor é como abaixo:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<EnviarLoteRpsEnvio xmlns="http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#">
...
<ns2:Signature>
</ns2:Signature>
...
</EnviarLoteRpsEnvio>
E eu acredito que essas diferenças estejam invalidando o conteudo da assinatura digital… Alguém me ajuda, por favor?