Problema com a API DOM para manipulacao de XML => como replicar o xmlns?

6 respostas
E

Ola,

Estou fazendo testes de homologacao da NFE 2.00 e ha alguns dias atras saiu uma nova norma sobre uso do xmlns.
Eu estou com problema usando a org.w3c.dom, pois quando o mesmo xmlns existe na tag pai e na tag filha, ele elimina da tag filha.
Ao fazer isso, o checador da receita estadual da o erro "215 - Falha de schema XML".

Meu XML esta assim antes de gerar a arvore DOM:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2">
	<enviNFe versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
		<idLote>75600</idLote>
		<NFe xmlns="http://www.portalfiscal.inf.br/nfe">
			...
		</NFe>
	</enviNFe>
</nfeDadosMsg>

Ao mandar imprimir a arvore DOM gerada, fica assim, detonando o xmlns da tag NFe:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<nfeDadosMsg xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NfeRecepcao2">
	<enviNFe versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
		<idLote>75600</idLote>
		<NFe>
			...
		</NFe>
	</enviNFe>
</nfeDadosMsg>

Existe alguma forma de desabilitar este comportamento?

6 Respostas

G

Boa tarde Edilmar,

Já encontrou alguma solução para o ocorrido? Estou passando pelo mesmo problema, porém, descobri que apenas algumas das SEFAZ
validam a tag de maneira. Resumindo consigo emitir para AM, ES, RS, RJ apenas com
, porém, não consigo emitor para a SEFAZ PR.

Se descobrir qual o problema por favor posta na thread.

Vlw!

E

Boa tarde,

Ainda nao consegui. Um amigo meu disse que viu em algum site na internet um jeito do Java nao fazer isso, mas ele nao lembra. Estamos pesquisando. Eu nao consigo autorizar NFE2.00 nos estados do MS e PR, que testam esta configuracao.

E

RESOLVIDO! Abaixo o codigo para isso, onde algumas variaveis que nao aparecem porque sao parametros para o metodo de envio de lote, e voce podera adaptar conforme seu codigo:

String msg = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
          "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\">" +
              "<soap:Header>" +
                  "<nfeCabecMsg xmlns=\"" + xmlnsCabecMsg + "\"><versaoDados>" + versaoDados + "</versaoDados><cUF>" + uf + "</cUF></nfeCabecMsg>"+
              "</soap:Header>" +
              "<soap:Body>" +
                  "<nfeDadosMsg xmlns=\"" + xmlnsDadosMsg + "\">" +
                    "<enviNFe versao=\"" + versaoDados + "\" xmlns=\"" + xmlnsDadosMsgElement + "\">" +
                      "<idLote>" + idLote + "</idLote>" +
                      Geral.FileStrLoad(nomeArqXML).substring(54) +
                    "</enviNFe>" +
                  "</nfeDadosMsg>" +
              "</soap:Body>" +
          "</soap:Envelope>";
        //
        MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
        SOAPMessage message = factory.createMessage(null, new ByteArrayInputStream(msg.getBytes()));
        SOAPConnection con = SOAPConnectionFactory.newInstance().createConnection();
        SOAPMessage response = con.call(message, new URL(url));
G

Bom dia Edilmar,

Poderia, por favor, me mostrar o conteúdo final da sua String msg ??

Agradecido.,

E

O conteudo ja esta ai em cima no meu codigo. É a “msg”. A parte de dentro que nao aparece diretamente é o XML normal da NFE. Mas o mais importante nao é ele, e sim o que esta “ao redor” dele, a montagem da mensagem SOAP 1.2.

J

Edilmar,
Obrigado por compartilhar a resolução.
Estava com o mesmo problema e consegui resolver com seu post.
O problema no meu código estava nos MimeHeaders.
Obrigado pela ajuda!

Criado 23 de dezembro de 2010
Ultima resposta 31 de mar. de 2011
Respostas 6
Participantes 3