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