HOW TO: Validate XML Fragments Against uno schema XML in Visual Basic .NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 317463 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene descritto come utilizzare oggetti XmlValidatingReader e XMLSchemaCollection per convalidare un frammento XML (Extensible Markup Language) rispetto a uno schema XML.

XmlValidatingReader implementa la classe XmlReader e fornisce il supporto per la convalida dei dati XML. La proprietÓ Schemas di XmlValidatingReader si connette il lettore al file dello schema memorizzati in un oggetto XmlSchemaCollection . La proprietÓ ValidationType del XmlValidatingReader specifica il tipo di convalida, che il lettore deve eseguire. Se la proprietÓ Ŕ impostata su ValidationType.None , Ŕ possibile creare un lettore nonvalidating.

╚ possibile aggiungere gli schemi di XML (XSD, XML Schema Definition) e gli schemi (XML-Data REDUCED) solo XmlSchemaCollection . Utilizzare il metodo Add con un URI dello spazio dei nomi per caricare gli schemi. Per gli schemi XML, l'URI tipico sia la proprietÓ di targetNamespace dello schema.

Requisiti

Nell'elenco che segue vengono indicati l'hardware, il software, l'infrastruttura di rete e i service pack necessari:
  • Microsoft Visual Studio .NET sia installato sul sistema operativo Microsoft Windows a compatibile
In questo articolo si presume la conoscenza dei seguenti argomenti:
  • Visual Basic .NET
  • Standard XML di base
  • Schemi XSD

Creare uno schema XSD

Incollare il codice riportato di seguito in un nuovo file di testo denominato C:\Books.xsd:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:bookstore-schema" elementFormDefault="qualified" targetNamespace="urn:bookstore-schema">
	<xsd:element name="bookstore" type="bookstoreType" />
	<xsd:element name="comment" type="xsd:string" />
	<xsd:element name="author" type="authorName"/>
	<xsd:complexType name="authorName">
		<xsd:sequence>
			<xsd:element name="first-name" type="xsd:string" />
			<xsd:element name="last-name" type="xsd:string" />
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="bookstoreType">
		<xsd:sequence maxOccurs="unbounded">
			<xsd:element name="book" type="bookType" />
			<xsd:element ref="comment" minOccurs="0" />
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="bookType">
		<xsd:sequence>
			<xsd:element name="title" type="xsd:string" />
			<xsd:element ref="author" />
			<xsd:element name="price" type="xsd:decimal" />
		</xsd:sequence>
		<xsd:attribute name="genre" type="xsd:string" />
	</xsd:complexType>
	
</xsd:schema>
				

Creare un'applicazione di Visual Basic .NET

  1. Creare una nuova Applicazione Windows in Visual Basic .NET.
  2. Trascinare Button1 in Form1. Incollare il codice seguente per aggiungere una variabile membro privata a Form1 di classe :
    Dim m_success As Boolean
    					
  3. Incollare la seguente routine sub per creare un ValidationEventHandler che genera errori di convalida nell'oggetto XMLValidatingReader :
    Public Sub ValidationEventHandle(ByVal sender As Object, ByVal args As ValidationEventArgs)
            m_success = False
            Console.WriteLine((ControlChars.CrLf & ControlChars.Tab & "Validation error: " & args.Message))
        End Sub 'ValidationEventHandle
    						
    Nota : ╚ necessario includere un gestore eventi per ricevere informazioni sugli errori di convalida in Data Type Definition (DTD), i dati XML (REDUCED) schema e lo schema (XSD), definizione di XML dello schema. Il gestore eventi riceve un argomento di tipo ValidationEventArgs che contiene dati relativi all'evento.

    Il gestore di callback consente la proprietÓ ValidationEventArgs.Severity di garantire che un documento di istanza XML Ŕ convalidato rispetto a uno schema. La proprietÓ di gravitÓ consente di distinguere tra un errore di convalida ( gravitÓ Ŕ uguale a XmlSeverityType.Error ) che indica un errore irreversibile e convalida una messaggio di avviso ( gravitÓ Ŕ uguale a XmlSeverityType.Warning ) che indica che informazioni sullo schema non sono disponibile.
  4. Incollare il codice seguente nella routine evento Button1_Click :
            Dim reader As XmlValidatingReader = Nothing
            Dim myschema As New XmlSchemaCollection()
    
            Try
                'Create the XML fragment to be parsed.
                Dim xmlFrag As String = "<author  xmlns='urn:bookstore-schema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>" & _
                                "<first-name>Herman</first-name>" & _
                               "<last-name>Melville</last-name>" & _
                             "</author>"
    
                'Create the XmlParserContext.
                Dim context As New XmlParserContext(Nothing, Nothing, "", XmlSpace.None)
               
                'Implement the reader. 
                reader = New XmlValidatingReader(xmlFrag, XmlNodeType.Element, context)
                'Add the schema.
                myschema.Add("urn:bookstore-schema", "Books.xsd")
    
                'Set the schema type and add the schema to the reader.
                reader.ValidationType = ValidationType.Schema
                reader.Schemas.Add(myschema)
    
                'Add the handler to raise the validation event.
                AddHandler reader.ValidationEventHandler, AddressOf Me.ValidationEventHandle
    
                While reader.Read
    
                End While
                Console.WriteLine("Completed validating xmlfragment")
    
            Catch XmlExp As XmlException
                Console.WriteLine(XmlExp.Message)
            Catch XmlSchExp As XmlSchemaException
                Console.WriteLine(XmlSchExp.Message)
            Catch GenExp As Exception
                Console.WriteLine(GenExp.Message)
            End Try
        End Sub
    					
  5. Quando nella finestra di output viene visualizzato il seguente messaggio, il frammento XML Ŕ un elemento valido:
    Completed validating xmlfragment
    					
Nota : l'oggetto XMLValidatingReader convalida solo le dichiarazioni di tipo e gli elementi di livello superiore in schema XML. Frammenti XML, ad esempio gli elementi secondari, sono considerati locali. Non Ŕ possibile passare frammenti XML per XmlValidatingReader per la convalida diretta finchÚ non si dichiarare i frammenti XML come elementi di primo livello e impostata il riferimento a livello di richiesto.

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportati di seguito:
307379HOW TO: Convalida di un documento XML con DTD, XDR o XSD in Visual C# .NET
313826INFO: Roadmap per gli schemi XML in .NET Framework
313651INFO: Roadmap for XML in .NET Framework
Per ulteriori informazioni, vedere MSDN seguenti siti Web:
Spazio dei nomi System.Xml
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxml.asp

Servizi Web XML
http://msdn.microsoft.com/xml

ProprietÓ

Identificativo articolo: 317463 - Ultima modifica: mercoledý 3 settembre 2003 - Revisione: 2.2
Le informazioni in questo articolo si applicano a:
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Chiavi:á
kbmt kbhowtomaster KB317463 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 317463
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com