Buenas!!

 

Estoy usando el sgte codigo para  validar un documento xml en vb.net

 

Pero no estoy obteniendo el nro de linea
correcto(“args.Exception.LineNumber”), sino que tengo el nro de linea sin
espacios en el xml, no se como hacer para obtener el código de línea
correcto, respetando los espacios del xml, 

 

(Por ejemplo el validate me informa error en la línea 88,(esto es correcto
considerando el xml sin espacios)

 pero esa línea coincide si el xml no contiene espacios, tendría que obtener
ese mismo nro respetando los espacios del xml)

 

por favor, alguien puede darme una pista de que como validar el xml
obteniendo los datos de nro de línea correctos?

(una opcion podría ser poder obtener el nro de líneas del xml con espacios ,
el nro de líneas del xml sin espacios y la diferencia asignarla a la
propiedad  settings.LineNumberOffset, pero estoy buscando una forma mas
rapida de resilverlo)

 

Public Function Validate(ByVal DocXml As String, ByVal DocXsd As String) As
Boolean Implements IValidaContrato.Validate

        Dim res As Boolean = False

        Dim oXmlSchema As XmlSchema = New XmlSchema()

        Dim settings As XmlReaderSettings = New XmlReaderSettings()

 

        Try

            settings.CloseInput = True

            settings.ValidationType = ValidationType.Schema

            settings.IgnoreComments = False

            settings.IgnoreProcessingInstructions = False

            settings.IgnoreWhitespace = False

 

            Dim sr As StringReader = New StringReader(DocXsd)

            Dim tr As TextReader = sr

 

            oXmlSchema = XmlSchema.Read(tr, AddressOf ValidationCallbackOne)

            settings.Schemas.Add(oXmlSchema)

 

            AddHandler settings.ValidationEventHandler, AddressOf
ValidationCallbackOne

            Dim r As StringReader = New StringReader(DocXml)

            Dim valReader As XmlReader = XmlReader.Create(r, settings)

            Do While valReader.Read()

 

            Loop

 

        Catch ex As Exception

            m_ErrorMessage = m_ErrorMessage & ex.Message

            res = False

        End Try

 

        Return res

    End Function

 

Public Sub ValidationCallbackOne(ByVal sender As Object, ByVal args As
ValidationEventArgs)

m_ErrorMessage = m_ErrorMessage & args.Message.ToString() & " Error Nro
linea: " & args.Exception.LineNumber.ToString & " Posicion: " &
args.Exception.LinePosition.ToString()

End Sub

 

Muchas gracias!

Saludos, 

Clarisa

 

PD.: Vale la aclaracion, no cambie de sexo, Clari, una amiga, me pidio que
lo envie la lista... Saludos!

 

Clarisa Savio Obeid 
Software Engineer 
NEORIS ARGENTINA 
Dorrego 1042 - Rosario, S2000DHV 
Teléfono Rosario: (54-341) 5127400 
............................................................................
.......... 

L.N.Alem 518, Piso 4 - Bs As, C1001AAN 
Teléfono Bs As: (54-11) 51677519/7500 
............................................................................
.......... 

 
<http://by121fd.bay121.hotmail.msn.com/cgi-bin/compose?mailto=1&msg=E51EAE0E
-4915-46E5-8CFE-73962D2E7E5A&start=0&len=31191&src=&type=x&to=clarisa.obeid@
neoris.com&cc=&bcc=&subject=&body=&curmbox=00000000-0000-0000-0000-000000000
001&a=7ab23df6b23566baa1389e5cd9f7fffa217d8d46e509a87885348b8b39d98c9f>
[EMAIL PROTECTED]
www.neoris.com 

 

Reply via email to