VALIDA?ÃO DE XML COM SCHEMA
Gostaria de saber se algum conseguiu fazer um validador dos erros da NFe com o schema semelhante ao da nota fiscal gratuito do governo.
Sem sim tem como passar dicas de como fazer?
Sem sim tem como passar dicas de como fazer?
Pra mim, as mensagens de erro parecem bem claras...
Public Lista as new list(of string)
public NomeArq as string = [Nome do arquivo XML]
Private Sub VerificaErros(ByVal sender As Object, ByVal e As ValidationEventArgs)
If Not e.Exception.Message.Contains([Ô]Signature[Ô]) Then
[ô] MsgBox(e.Exception.LineNumber.ToString & Chr(13) & e.Message.ToString)
Lista.Add([Ô]Erro na linha: [Ô] & e.Exception.LineNumber.ToString & [Ô], Coluna: [Ô] & e.Exception.LinePosition.ToString & [Ô], mensagem: [Ô] & e.Exception.Message + Chr(13))
End If
End Sub
Friend Function ValidaXML() As String
lista.clear
Try
If IO.File.Exists(NomeArq) = False Then Throw New Exception([Ô]Não foi localizado o arquivo XML a ser validado.[Ô] & ControlChars.NewLine & NomeArq)
Dim SchemaSet As XmlSchemaSet = New XmlSchemaSet
If PPathSchema.Trim = [Ô][Ô] Then Throw New Exception([Ô]Não foi informado o local dos arquivos de schema de validação.[Ô])
If IO.Directory.Exists(PPathSchema) = False Then Throw New Exception([Ô]Foi informado a pasta com os arquivos de schema[Ô] & ControlChars.NewLine & PPathSchema & ControlChars.NewLine & [Ô]Mas essa pasta não existe...[Ô])
If IO.File.Exists(Path.Combine(PPathSchema, [Ô]leiauteNFe_v3.10.xsd[Ô])) = False Then Throw New Exception([Ô]Não foi localizado o arquivo leiauteNFe_v3.10.xsd em[Ô] & ControlChars.NewLine & PPathSchema & ControlChars.NewLine & [Ô]Não é possÃvel efetuar a validação[Ô])
If IO.File.Exists(Path.Combine(PPathSchema, [Ô]tiposBasico_v3.10.xsd[Ô])) = False Then Throw New Exception([Ô]Não foi localizado o arquivo tiposBasico_v3.10.xsd em[Ô] & ControlChars.NewLine & PPathSchema & ControlChars.NewLine & [Ô]Não é possÃvel efetuar a validação[Ô])
If IO.File.Exists(Path.Combine(PPathSchema, [Ô]nfe_v3.10.xsd[Ô])) = False Then Throw New Exception([Ô]Não foi localizado o arquivo nfe_v3.10.xsd em[Ô] & ControlChars.NewLine & PPathSchema & ControlChars.NewLine & [Ô]Não é possÃvel efetuar a validação[Ô])
If IO.File.Exists(Path.Combine(PPathSchema, [Ô]xmldsig-core-schema_v1.01.xsd[Ô])) = False Then Throw New Exception([Ô]Não foi localizado o arquivo xmldsig-core-schema_v1.01.xsd em[Ô] & ControlChars.NewLine & PPathSchema & ControlChars.NewLine & [Ô]Não é possÃvel efetuar a validação.[Ô])
SchemaSet.Add([Ô]http://www.portalfiscal.inf.br/nfe[Ô], Path.Combine(PPathSchema, [Ô]leiauteNFe_v3.10.xsd[Ô]))
SchemaSet.Add([Ô]http://www.portalfiscal.inf.br/nfe[Ô], Path.Combine(PPathSchema, [Ô]tiposBasico_v3.10.xsd[Ô]))
SchemaSet.Add([Ô]http://www.portalfiscal.inf.br/nfe[Ô], Path.Combine(PPathSchema, [Ô]nfe_v3.10.xsd[Ô]))
SchemaSet.Add([Ô]http://www.w3.org/2000/09/xmldsig#[Ô], Path.Combine(PPathSchema, [Ô]xmldsig-core-schema_v1.01.xsd[Ô]))
Dim Ler As XmlReaderSettings = New XmlReaderSettings
Ler.ValidationType = ValidationType.Schema
Ler.Schemas = SchemaSet
AddHandler Ler.ValidationEventHandler, AddressOf VerificaErros
Dim Reader As XmlReader = XmlReader.Create(NomeArq, Ler)
While Reader.Read
End While
Reader.Close()
Reader = Nothing
Ler = Nothing
If NFer.Count = 0 Then
Return 0
Else
Return 1
End If
Catch ex As Exception
lista.Add(ex.Message)
Return 1
End Try
End Function
Rodando essa função... se teu xml contiver erros, será retornada uma lista de erros com a mensagem no padrão da SEFAZ
Tópico encerrado , respostas não são mais permitidas