ERRO AO VALIDAR O XSD COM XML DA NFE EM VB.NET

ANGELOATA 02/06/2016 11:24:02
#462916
Estou validando o XML com o XSD da Nf-e e esta ocorrendo o erro apos a validação do CRT:

Referência de objeto não definida para uma instância de um objeto

pelo que eu vi no XSD , e no manual da NFE o erro ocorre ao acessar a tag avulsa, so que no xml nao tem essa TAG. Como devo proceder, para que esse erro nao ocorra e XML possa ser validado ate o final?


  
Public Shared Sub ValidarXML(pServico As Enumerador.ServicoNFE,
pXML As XDocument)

Try

Dim settings As New XmlReaderSettings()
AddHandler settings.ValidationEventHandler, AddressOf ValidationEventHandler

gValidacaoXML = True
gErrosValidacaoXML = Nothing

settings.ValidationType = ValidationType.Schema

settings.Schemas.Add([Ô]http://www.portalfiscal.inf.br/nfe[Ô], [Ô]C:\XML\SchemaNFe
fe_v3.10.xsd[Ô])

Using XmlValidatingReader As XmlReader = XmlReader.Create([Ô]c:
fe.xml[Ô], settings)

While XmlValidatingReader.Read()

End While

End Using

Catch ex As Exception

gErrosValidacaoXML.Add(ex.Message)

Exit Sub

End Try

End Sub

Public Shared Sub ValidationEventHandler(ByVal sender As Object, ByVal args As ValidationEventArgs)

gValidacaoXML = False
gErrosValidacaoXML.Add(vbTab + [Ô]Erro de Validação : [Ô] + args.Message)

If args.Severity = XmlSeverityType.Warning Then

MessageBox.Show([Ô]Nenhum arquivo de Schema foi encontrado para efetuar a validação...[Ô])

ElseIf args.Severity = XmlSeverityType.Error Then

MessageBox.Show([Ô]Ocorreu um erro durante a validação....[Ô])

Else

MessageBox.Show(vbTab + [Ô]Erro de Validação : [Ô] + args.Message)

End If

If Not (args.Exception Is Nothing) Then [ô] Erro na validação do schema XSD

MessageBox.Show(args.Exception.SourceUri + [Ô],[Ô] & args.Exception.LinePosition & [Ô],[Ô] & args.Exception.LineNumber)

End If

End Sub


JABA 02/06/2016 12:33:21
#462921
Mostre a linha que gera o erro.
ANGELOATA 02/06/2016 13:43:48
#462928
Esta nesse ponto... quando o while le o bloco e nao encontra a tAG no xml correspondente ao xsd aborta e da a mensagem Referência de objeto não definida para uma instância de um objeto


  Using XmlValidatingReader As XmlReader = XmlReader.Create([Ô]c:
fe.xml[Ô], settings)

While XmlValidatingReader.Read()

End While

End Using
JABA 02/06/2016 13:50:03
#462929
Tente assim:

Using XmlValidatingReader As [txt-color=#e80000]NEW[/txt-color] XmlReader = XmlReader.Create([Ô]c:
fe.xml[Ô], settings)

While XmlValidatingReader.Read()

End While

End Using

ou assim:

Using XmlValidatingReader As XmlReader = XmlReader.Create([Ô]c:
fe.xml[Ô], settings)

While [txt-color=#e80000]XmlReader[/txt-color] .Read()

End While

End Using
ANGELOATA 02/06/2016 16:07:30
#462938
Nao deu certo... o erro permanece

No while teria que tratar as TAGS que nao existem no XML da NF-e... é essa a impressão que dá... mas nao sei como fazer isso.... Porque o erro de referencia é justamente uma TAG que contem no XSD e nao existe no XML, por se tratar de um opcional.

Como fazer para ignorar as TAG que nao sao obrigatorias?
JABA 02/06/2016 16:33:13
#462941
O que acontece é que o objeto que está sendo usado não foi instanciado. Acredito que quando você usa o XmlReader.Create, ele retorna essa instância pra você. Talvez isso não esteja acontecendo por um erro gerado dentro dele, ou o arquivo que você está passando não existe ou está com problemas, ou então, a variável que você usou para receber a instância não seja do tipo XmlValidatingReader, e sim do tipo XmlReader. Poste o código desse método aqui pra analisarmos.

Tenta assim pra ver se vai:

Using [txt-color=#e80000]XmlReader[/txt-color] As xmlReader = XmlReader.Create([Ô]c:
fe.xml[Ô], settings)

While xmlReader .Read()

End While

End Using
ANGELOATA 03/06/2016 08:49:38
#462971
Pacote usado de XSD: Esquemas XML NF-e - Pacote de Liberação No. 8i2 (CFOP EXTERNO) (13/04/2016) (ZIP)

Segue o XML usados:


<?xml version=[Ô]1.0[Ô] encoding=[Ô]utf-8[Ô]?>
<NFe xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>
<infNFe Id=[Ô]NFe35160607254575000260550000000000021491581247[Ô] versao=[Ô]3.10[Ô]>
<ide>
<cUF>35</cUF>
<cNF>49158124</cNF>
<natOp>VENDA</natOp>
<indPag>0</indPag>
<mod>55</mod>
<serie>0</serie>
<nNF>2</nNF>
<dhEmi>2016-06-03T08:35:33-03:00</dhEmi>
<dhSaiEnt>2016-06-03T08:35:33-03:00</dhSaiEnt>
<tpNF>1</tpNF>
<idDest>1</idDest>
<cMunFG>3506508</cMunFG>
<tpImp>0</tpImp>
<tpEmis>1</tpEmis>
<cDV>7</cDV>
<tpAmb>2</tpAmb>
<finNFe>1</finNFe>
<indFinal>0</indFinal>
<indPres>9</indPres>
<procEmi>0</procEmi>
<verProc>1.0.0.0</verProc>
</ide>
<emit>
<CNPJ>99999999000191</CNPJ>
<xNome>NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL</xNome>
<enderEmit>
<xLgr>RUA BENTO DA CRUZ</xLgr>
<nro>1070</nro>
<xBairro>CENTRO</xBairro>
<cMun>3506508</cMun>
<xMun>BIRIGUI</xMun>
<UF>SP</UF>
<CEP>16200108</CEP>
<cPais>1058</cPais>
<xPais>BRASIL</xPais>
</enderEmit>
<IE>ISENTO</IE>
<IM>24030</IM>
<CNAE>4782202</CNAE>
<CRT>1</CRT>
</emit>
<dest>
<CNPJ>34748126000160</CNPJ>
<xNome>EMPRESA EXEMPLO</xNome>
<enderDest>
<xLgr>RUA BENTO DA CRUZ</xLgr>
<nro>7547</nro>
<xBairro>CENTRO</xBairro>
<cMun>3506508</cMun>
<xMun>BIRIGUI</xMun>
<UF>SP</UF>
<CEP>16200108</CEP>
<cPais>1058</cPais>
<xPais>BRASIL</xPais>
</enderDest>
<indIEDest>1</indIEDest>
<IE>516106509974</IE>
<IM>1241</IM>
</dest>
<total>
<ICMSTot>
<vBC>0.00</vBC>
<vICMS>0.00</vICMS>
<vICMSDeson>0.00</vICMSDeson>
<vBCST>0.00</vBCST>
<vST>0.00</vST>
<vProd>0.00</vProd>
<vFrete>0.00</vFrete>
<vSeg>0.00</vSeg>
<vDesc>0.00</vDesc>
<vII>0.00</vII>
<vIPI>0.00</vIPI>
<vPIS>0.00</vPIS>
<vCOFINS>0.00</vCOFINS>
<vOutro>0.00</vOutro>
<vNF>0.00</vNF>
<vTotTrib>0.00</vTotTrib>
</ICMSTot>
</total>
<transp>
<modFrete>9</modFrete>
</transp>
</infNFe>
</NFe>
JABA 03/06/2016 14:22:36
#463004
Eu estava me referindo ao código do método XmlReader.Create; Qual é o tipo de retorno dele? Como ele foi feito?
ANGELOATA 07/06/2016 11:51:04
#463153
Cara foi feito da forma que coloquei a função acima.... é estranho nao sei mais o que fazer e olhar...
JABA 07/06/2016 12:22:21
#463156
O XmlReader.Create deve possuir um tipo de retorno. Qual é?
ANGELOATA 07/06/2016 13:30:12
#463157
ele deve retornar e validar com o schema... ele retorna um objeto. Peguei um xml de um fornecedor e deu o mesmo erro ao validar o XML, será que algum bug do VS2012?
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas