Ir para conteúdo
  • Cadastre-se

dev botao

Validate failed because the document does not contain exactl


Mark Apollo
  • Este tópico foi criado há 3429 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Galera, estou com um problema para validar o xml em anexo, está dando a seguinte mensagem:

Validate failed because the document does not contain exactly one root node.

Alguém tem ideia do que seja? já comparei o xml com outro semelhante que foi autorizado e não consegui verificar alguma diferença de estrutura ou algo que possa atrapalhar.

- Sou desenvolvedor.

- De que linguagem, delphi? .NET? Java?

- Qualquer uma, sou desenvolvedor.

Link para o comentário
Compartilhar em outros sites

Galera achei o erro, só não posso corrigir agora no componente, se alguém se propor:

Não pode ter nenhum dado com o conteúdo "%rodo%", no caso do xml em anexo, o email do destinatário é "[email protected]" dando erro no momento de validar a tag rodo, que acaba pegando o conteúdo:

7767.617767.61FRETE VALOR7767.61007767.6112.00932.1121441.75TRANSPORTE DE CARGA01PESO BRUTO15023.000001PESO CUBADO15023.000003VOLUMES4.0000020575312012-10-2710410007372544039196206405MTA667616270T10603ES6823219572003374891GUIMAS PEREIRAISENTOES13444684948010MPG943914320T00600ES0095933379709018990EMERSON PAULO PEREIRAISENTOES1SILVIO MARCIO GODOI DE MOURA05847722702

- Sou desenvolvedor.

- De que linguagem, delphi? .NET? Java?

- Qualquer uma, sou desenvolvedor.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa noite Markapollo,

Fiz um alteração, atualize os fontes e teste fazendo o favor.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Markapollo,

Eu já estava em casa, e fazendo a última checagem das postagens.

Muito obrigado por identificar um bug no componente.

Me parece que agora esta ok.

Fico no aguardo de um retorno.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 9 meses depois ...

Italo PESO BRUTO (Kg) PESO BASE CÁLC. (Kg) como eu faco para aparecer no CTE?

 

 

Hoje eu preencho assim:

 

 with infCarga.InfQ.Add do
            begin
                cUnid := uKg;
                tpMed := 'Kg';
                qCarga := CurrencyEdit12.Value;
 
            end;
 
            with infCarga.InfQ.Add do
            begin
                cUnid := uUnidade;
                tpMed := 'UN';
                qCarga := CurrencyEdit13.Value;
            end;
 
            with infCarga.InfQ.Add do
            begin
                cUnid := uM3;
                tpMed := 'M3';
                qCarga := CurrencyEdit21.Value;
            end;
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Dionatan,

 

No caso do DACTE - Quick Report a dica é o seguinte:

 

cUnid := uKg;

tpMed := 'PESO BRUTO';
qCarga := CurrencyEdit12.Value;
 
 

cUnid := uKg;

tpMed := 'PESO BC';
qCarga := CurrencyEdit12.Value;
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • 8 meses depois ...

Bom dia! Desculpem desenterrar o tópico, porém estou com este mesmo erro mas ao gerar MDF-e e a causa é exatamente a mesma do Mark. 

O nome da empresa e email, contém 'Rodo'

Sei que há um forum específico para MDF-e porém o problema é o mesmo e pelo que ví a unit tbm é.

 

Obrigado

Link para o comentário
Compartilhar em outros sites

Boa tarde, Italo.

O erro ainda continua ocorrendo

class function MDFeUtil.Valida(const AXML: AnsiString;
  var AMsg: AnsiString; const APathSchemas: string = ''): Boolean;
begin
{$IFDEF ACBrMDFeOpenSSL}
  Result := ValidaLibXML(AXML, AMsg, APathSchemas) and
            ValidaModalLibXML(AXML, AMsg, APathSchemas);
{$ELSE}
  Result := ValidaMSXML(AXML, AMsg, APathSchemas) and
            ValidaModalMSXML(AXML, AMsg, APathSchemas)
{$ENDIF}
end;

nos meus fontes está caindo no bloco do ELSE, estou usando a instalação padrão do ACBr com delphi XE... acredito que seja CAPICOM

Obrigado

Editado por GustavoKato
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Gustavo,

 

O erro ocorre ao validar o XML que acaba de ser gerado ou você carrega um XML previamente gerado e depois efetua a sua validação?

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Moderadores

XML previamente gerado, carrego o XML em uma stringStream, executo o LoadFromStream e valido.

Gustavo 

Favor anexar um xml para que possa estar efetuando um debug no código, pois não emito o mesmo!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Juliomar Marchetti, enviei por inbox pois são informações de produção.

 

minha "solução de contorno" foi 

 

na Unit ACBrUtil

function SeparaDados...
begin
  ..
  if MantemChave then
   begin
     PosIni := Pos(UChave, UTexto)-1;
     PosFim := Pos('/' + UChave, UTexto) + length(UChave) + 3;

     if (PosIni = 0) or (PosFim = 0) then
      begin
        PosIni := Pos('NS2:' + UChave, UTexto) - 1;
        PosFim := Pos('/NS2:' + UChave, UTexto) + length(UChave) + 3;
      end;
   end
  else
   begin
     if UChave = 'RODO' then
     begin
       PosIni := Pos('<RODO', UTexto) + Pos('>', copy(UTexto, Pos('<RODO', UTexto), length(UTexto)));
       PosFim := Pos('/' + UChave, UTexto);
     end
     else
     begin
       PosIni := Pos(UChave, UTexto) + Pos('>', copy(UTexto, Pos(UChave, UTexto), length(UTexto)));
       PosFim := Pos('/' + UChave, UTexto);
     end;

     if (PosIni = 0) or (PosFim = 0) then
      begin
        PosIni := Pos('NS2:' + UChave, UTexto) + Pos('>', copy(UTexto, Pos('NS2:' + UChave, UTexto), length(UTexto)));
        PosFim := Pos('/NS2:' + UChave, UTexto);
      end;
   end;
  ..
end;
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...

Boa tarde,

 

Hoje ocorreu comigo este mesmo problema (Validate failed because the document does not contain exactly one root node.

 

Analisando o XML que ocorreu o problema e um que emiti anteriormente os dois seguem com a mesma estrutura. 

 

Não consegui identificar nenhum problema nele.

 

Seguindo a alteração sugerida pelo GustavoKato, o problema não ocorreu mais!

 

Obs: O cliente que tive problema é do Paraná.

 

Atenciosamente.

Saudações,

Wislei de Brito Fernandes

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Boa noite.

 

Está ocorrendo um erro quando eu tento validar um XML no Lazarus.

Uso o certificado A1. Ele assina, mas quando valido o XML ocorre o erro "'xs:base64Binary''.

Só ocorre no Lazarus, o mesmo XML é validado no Delphi.

O erro ocorre em xmlDocGetRootElement(doc)

 
function ValidaLibXML(const AXML: AnsiString;
  var AMsg: AnsiString; const APathSchemas: string = ''; AModeloDF: TpcnModeloDF = moNFe;
  AVersaoDF: TpcnVersaoDF = ve200): Boolean;
 
 
 doc := xmlParseDoc(PAnsiChar(Axml));
 if ((doc = nil) or (xmlDocGetRootElement(doc) = nil)) then
  begin
    AMsg := 'Erro: unable to parse';
    Result := False;
    exit;

  end;  

 

Se alguém tiver uma dica, agradeço.

 

Tércio Lins.

Link para o comentário
Compartilhar em outros sites

Boa tarde Juliomar.

Eu uso o Lazarus-1.3-44691-fpc-2.6.2-20140412-win32.

Tirei os comentários do ACBr.inc:

 

{$IFDEF FPC}
  {$DEFINE ACBrNFeOpenSSL}
  {$DEFINE ACBrCTeOpenSSL}
  {$DEFINE ACBrNFSeOpenSSL}
  {$DEFINE ACBrMDFeOpenSSL}
  {$DEFINE ACBrGNREOpenSSL}
  {$DEFINE VCL}
  {$DEFINE UNICODE} // Lazarus 0.9.26 usa UnicodeString como default para String
  {$DEFINE DELPHI7}
  {$DEFINE COMPILER7}
  {$H+}
{$ELSE}
  {$DEFINE BORLAND}
{$ENDIF}
 
Consigo verificar o status na Sefaz.

Pode está faltando algo, não consegui achar.

 

Grato,

Tércio Lins. 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Qual comentário você removeu?

bom primeira coisa com o Lazarus hoje só consegue com openssl, se estiver tentando usar o capcom não será possível

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Boa noite Juliomar.

 

Eu copiei a parte posterior do código, desculpe-me.

 

Foi esta parte que eu tirei o comentário.

 

// Para Usar os componentes de nota fiscal com openssl descomente as linhas abaixo
//--------------------------------------------------------------------------------
{$DEFINE ACBrNFeOpenSSL}
{$DEFINE ACBrCTeOpenSSL}
{$DEFINE ACBrNFSeOpenSSL}
{$DEFINE ACBrMDFeOpenSSL}
{$DEFINE ACBrGNREOpenSSL}
 
Como eu não estou conseguindo validar e, conseguentemente transmitir a NFe, eu fiz um Monitor em Delphi
para fazer todo o processo de envio. Neste caso uso o Capicom.
Não sei se precisaria desabilitar alguma coisa.
 
Grato,
Tércio Lins.
Link para o comentário
Compartilhar em outros sites

Pessoal, a funcão SeparaDados da unit "acbr\Fontes\ACBrComum\ACBrUtil" ainda está dando problemas,

mesmo com a alteração feita no dia 14/04/2014 pelo Ítalo conforme proposta feita pelo "Jairo - Microns".

 

Vejam o tracker que gerei sobre isso: http://www.projetoacbr.com.br/forum/index.php?/tracker/issue-28-bug-na-unit-acbrutil/

 

Minha sugestão seria incluir o "<" conforme propos o GustavoKato em

 

Ou seja a função ficaria assim: (ver anexo separadados.txt)

 

separadados.txt

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Adir,

 

Muito obrigado pela colaboração, já esta disponível.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Boa tarde Ítalo,

 

eu ví a alteração mas fiquei com uma dúvida.

 

Vc alterou de:

if MantemChave then
  begin
    PosIni := Pos(UChave, UTexto)-1;

 

para:

if MantemChave then
  begin
  PosIni := Pos('<' + UChave, UTexto)-1;

 

Mas como agora se está buscando com o '<', não deveria tirar o '-1' ?

Editado por Adir
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Adir,

 

Muito obrigado pelo alerta, já efetuei a correção e disponibilizei.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3429 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.