Pablo / Clarisa,

Hice una prueba (muy) rápida y me pareció que el número de línea que informa es 
correcto. O por lo menos cuando se agregan líneas en blanco el número de línea 
donde detecta el error cambia. ¿Tenés algún fragmento de XML donde se puede ver 
el problema?

Saludos,

Fernando Tubio

----- Original Message ----- 
  From: Pablo A. Allois 
  To: [email protected] 
  Cc: [EMAIL PROTECTED] 
  Sent: Monday, May 07, 2007 12:57 PM
  Subject: [puntonet] Consulta XML - args.Exception.LineNumber


  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 
  
......................................................................................
 

  [EMAIL PROTECTED]
  www.neoris.com 


Responder a