Gewusst wie: Überprüfen von XML-Fragments anhand eines XML-Schemas in Visual Basic .NET

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 317463 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser schrittweise aufgebaute Artikel beschreibt die Objekte XmlValidatingReader und XMLSchemaCollection verwenden, um ein XML-Fragment anhand einer XML-Schemas zu überprüfen.

XmlValidatingReader die XmlReader -Klasse implementiert und bietet Unterstützung für XML-Datenüberprüfung. Die Schemas -Eigenschaft des XmlValidatingReader verbindet den Reader die Schemadateien in eine XmlSchemaCollection zwischengespeichert. ValidationType -Eigenschaft die XmlValidatingReader gibt den Typ der Gültigkeitsprüfung der Reader durchführen soll. Wenn Sie die Eigenschaft auf ValidationType.None festlegen, erstellen Sie einen nonvalidating Reader.

Sie können nur XML Schema Definition (XSD-Schemas) und XDR (XML-Data Reduced)-Schemas XmlSchemaCollection hinzugefügt werden. Verwenden Sie die Hinzufügen -Methode mit einem Namespace-URI, um Schemas zu laden. Für XML-Schemas ist der typische Namespace-URI die TargetNamespace -Eigenschaft des Schemas.

Voraussetzungen

In der folgenden Liste sind die empfohlene Hardware, Software, Netzwerkinfrastruktur und erforderlichen Service Packs aufgeführt:
  • Microsoft Visual Studio .NET auf einem kompatiblen Betriebssystem Microsoft Windows installiert
In diesem Artikel wird vorausgesetzt, dass Sie über Erfahrungen auf den folgenden Gebieten verfügen:
  • Visual Basic .NET
  • Grundlegende XML-standards
  • XSD-schemas

Erstellen Sie ein XSD-Schema

Fügen Sie den folgenden Code in eine neue Textdatei mit dem Namen 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>
				

Erstellen einer Visual Basic .NET-Anwendung

  1. Erstellen Sie eine neue Visual Basic .NET-Windows-Anwendung.
  2. Ziehen Sie Button1 auf Form1. Fügen Sie folgenden Code können Sie eine Private-Member-Variable Class Form1 hinzufügen:
    Dim m_success As Boolean
    					
  3. Fügen Sie die folgende Sub-Prozedur eine ValidationEventHandler erstellen, die Validierungsfehler in XMLValidatingReader -Objekt löst:
    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
    						
    Hinweis : Sie müssen einen Ereignishandler für Informationen über Validierungsfehler in DTD (Data Type Definition), die XML-Data XDR (Reduced) empfangen einschließen Schema und das Schema XML Schema Definition Language (XSD). Der Ereignishandler empfängt ein Argument des Typs ValidationEventArgs , die mit diesem Ereignis verknüpft Daten enthält.

    Der Rückrufhandler kann die ValidationEventArgs.Severity -Eigenschaft verwenden, um sicherzustellen, dass ein XML-Instanzdokument anhand eines Schemas validiert wird. Die Severity -Eigenschaft ermöglicht das unterscheiden zwischen einen Validierungsfehler ( Schweregrad ist gleich XmlSeverityType.Error ), einen schwerwiegenden Fehler und eine Überprüfung ( Schweregrad ist gleich XmlSeverityType.Warning ) Warnung gibt an, dass keine Schemainformationen verfügbar sind.
  4. Fügen Sie den folgenden Code in der Button1_Click -Ereignisprozedur:
            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. Wenn die folgende Meldung im Ausgabefenster angezeigt wird, ist das XML-Fragment gültiges Element:
    Completed validating xmlfragment
    					
Hinweis : das XMLValidatingReader -Objekt nur die Typdeklarationen und die Elemente auf oberster Ebene im XML-Schema überprüft. XML-Fragmente, z. B. Sub Elemente gelten als lokal sein. Sie können keine XML-Fragmente an XmlValidatingReader für die direkte Validierung übergeben, wenn Sie XML-Fragmente als übergeordnete Elemente deklarieren und den Verweis auf erforderliche Ebene festgelegt.

Informationsquellen

Weitere Informationen finden Sie folgenden Artikel der Microsoft Knowledge Base:
307379Gewusst wie: Überprüfen ein XML-Dokuments mithilfe der DTD, XDR oder XSD in Visual c# .NET
313826INFO: Wegweiser für XML-Schemas in .NET Framework
313651INFO: Wegweiser für XML in .NET Framework
Weitere Informationen finden Sie im folgende MSDN-Websites:
System.XML-Namespace
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemxml.asp

Webdienste
http://msdn.microsoft.com/xml

Eigenschaften

Artikel-ID: 317463 - Geändert am: Mittwoch, 3. September 2003 - Version: 2.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Keywords: 
kbmt kbhowtomaster KB317463 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 317463
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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