maggio 2006 Blog Posts

Validatore xml

Avevo la necessità, in un progetto 2005, di controllare se un documento xml generato in base ad uno schema, fosse well-formed, così, per non farlo direttamente su http://www.xmlforasp.net/SchemaValidator.aspx dove avevo trovato un validatore on-line, ho pensato di provare a fare qualcosa del genere in VB2005. Ho creato così una classe il vb2005 ed ho notato che in effetti qualcosa è cambiato rispetto alla precedente versione, che qui ho commentato Imports System.XmlPublic Class XMLImport    Public XMLError As String    Private Sub XMLEvent(ByVal sender As Object, ByVal e As System.Xml.Schema.ValidationEventArgs)        XMLError += (e.Message & vbCrLf)    End Sub    Public Function LoadXMLData(ByVal XMLData As String, ByVal XSDSchema As String) As Boolean        XMLError = String.Empty        'Crea il documento XML utilizzando il codice passato in XMLData        Dim MyXMLDocument As New System.Xml.XmlDocument        Dim MyXSDTextReader As New System.IO.StringReader(XSDSchema)        'crea lo schema con l'handler all'evento di validazione che mi interessa        Dim MyXMLSchema As System.Xml.Schema.XmlSchema = System.Xml.Schema.XmlSchema.Read      (MyXSDTextReader, New System.Xml.Schema.ValidationEventHandler(AddressOf XMLEvent))        Dim MyXMLTextReader As New System.IO.StringReader(XMLData)        MyXMLDocument.Load(MyXMLTextReader)        MyXMLDocument.Schemas.Add(MyXMLSchema)        MyXMLDocument.Validate(New System.Xml.Schema.ValidationEventHandler(AddressOf XMLEvent))       'Obsolete(framework 1.1):         'Dichiara l'XML Reader        'Dim Myreader As XmlReader = XmlReader.Create(MyXMLTextReader)        ''Myreader.Settings.ValidationType = ValidationType.Schema        'Myreader.Settings.Schemas.Add(MyXMLSchema)        'Dim MyXMLValidatingReader As New System.Xml.XmlValidatingReader(MyXMLTextReader)        'MyXMLValidatingReader.Schemas.Add(String.Empty, XSDSchema)        'MyXMLValidatingReader.ValidationType = System.Xml.ValidationType.Schema        'MyXMLDocument.CreateDocumentFragment()        'MyXMLSchema.SourceUri = XSDSchema    End Function    Public Sub Dispose()        MyBase.Finalize()    End SubEnd Class Per provarlo :     Private Sub FormXmlValidator_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        LoadFile()    End Sub    Private Sub Validate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Validate.Click        'dichiaro la classe XmlImport        Dim Myreader As New XMLImport        'richiamo il metodo a cui passare i due parametri stringa precedentemente caricati in due textbox        Myreader.LoadXMLData(txtxml.Text, txtXsd.Text)        'controllo se il reader contiene errori di validazione        If Myreader.XMLError <> String.Empty Then            MessageBox.Show(Myreader.XMLError, "Importazione Xml", MessageBoxButtons.OK, MessageBoxIcon.Error)        Else            MessageBox.Show("Documento Xml Well-Formed", "Importazione Xml", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)        End If    End Sub    Public Sub LoadFile()        'legge il file xml        Dim MyfileXml As New System.IO.StreamReader("xsd\sidocup.xml", True)        txtxml.Text = MyfileXml.ReadToEnd        MyfileXml.Close()        'legge il file xsd        Dim MyfileXsd As New System.IO.StreamReader("xsd\sidocup.xsd", True)        txtXsd.Text = MyfileXsd.ReadToEnd        MyfileXsd.Close()    End Sub Magari ha bisogno di essere perfezionato o forse ci sono altri metodi più veloci, ma per i miei scopi è andato più che bene. Attendo critiche e insulti powered by IMHO 1.3

[OT] Abolizione costi di ricarica

Magari potrebbe servire a qualcosa. powered by IMHO 1.3

[O.T.] Lavoro tranquillo..

E poi non mi vengano a dire che non rischiamo nulla. powered by IMHO 1.3

Content-type is dead

Personalmente ci sono incappato in più di qualche occasione, ma se lo dice lui..ci possiamo credere. Fonte: blog Ian Hickson powered by IMHO 1.3

«maggio»
domlunmarmergiovensab
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910