SO WIRD'S GEMACHT: Ein XML-Dokument mithilfe von DTD, XDR oder XSD in Visual C# .NET überprüfen

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 307379 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde zuvor veröffentlicht unter D307379
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
307379 HOW TO: Validate an XML Document by Using DTD, XDR, or XSD in Visual C# .NET
In 315533 wird dieses Thema für Microsoft Visual Basic .NET behandelt.
Dieser Artikel bezieht sich auf die folgenden Namespaces der Microsoft .NET Framework - Klassenbibliothek:
  • System.Xml
  • System.Xml.Schema
Hinweis: Die Verwendung der hier aufgeführten Informationen sowie Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen.

Weitere Informationen zu den von Microsoft angebotenen Supportoptionen finden Sie unter folgender Internetadresse:
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt, wie Sie eine DTD (Document Type Definition), ein Microsoft XDR-Schema (XML-Data Reduced schema) oder ein XSD-Schema (XML Schema Definition Language schema) auf ein XML-Dokument (Extensible Markup Language document) anwenden. Dieser Artikel beschreibt auch, wie Sie die Klasse XmlValidatingReader verwenden, um ein XML-Dokument im Kontext der festgelegten Grammatik zu überprüfen, und wie Sie die Klasse XmlSchemaCollection verwenden, um Schemata im Speicher zwischenzuspeichern und somit die XML-Überprüfung zu optimieren.

XML-Dokumente enthalten Elemente und Attribute. Sie bieten ein flexibles und leistungsstarkes Verfahren an, um Daten zwischen Anwendungen und Organisationen auszutauschen. Sie können eine DTD, ein XDR-Schema oder ein XSD-Schema programmieren, um die zulässige Struktur und den Inhalt eines XML-Dokuments festzulegen. XSD-Schemata stellen das bevorzugte Verfahren dar, um in Microsoft .NET Framework XML-Grammatik festzulegen, aber auch DTDs und XDR-Schemata werden unterstützt.

Voraussetzungen

Dieser Artikel setzt voraus, dass Sie mit folgenden Themen vertraut sind:
  • Microsoft Visual C# .NET-Syntax oder Microsoft Visual Basic .NET-Syntax
  • XML-Konzepte, einschließlich Überprüfungsprobleme

Ein XML-Dokument erstellen

  1. Starten Sie Visual Studio .NET.
  2. Erstellen Sie auf Ihrem lokalen Computer eine neue XML-Datei.
  3. Fügen Sie zum XML-Dokument folgende Daten hinzu, um ein Produkt in einem Katalog darzustellen:
    <Product ProductID="123">
       <ProductName>Rugby jersey</ProductName>
    </Product>
  4. Speichern Sie die Datei unter dem Namen Product.xml in einem neuen Ordner, den Sie C:\MyFolder nennen.

Verwendung der DTD

Die DTD erstellen und mit einem XML-Dokument verknüpfen

  1. Erstellen Sie in Visual Studio .NET eine leere Textdatei.
  2. Fügen Sie in die Datei folgende DTD-Deklarationen ein, um die Grammatik des XML-Dokuments zu beschreiben:
    <!ELEMENT Product (ProductName)>
    <!ATTLIST Product ProductID CDATA #REQUIRED>
    <!ELEMENT ProductName (#PCDATA)>
  3. Speichern Sie die Datei unter dem Namen Product.dtd in dem Verzeichnis C:\MyFolder.
  4. Öffnen Sie in Visual Studio .NET die Datei Product.xml.
  5. Fügen Sie am Anfang der Datei Product.xml folgende DOCTYPE-Anweisung hinzu, um das XML-Dokument mit der DTD-Datei zu verknüpfen:
    <?xml version='1.0' encoding='utf-16'?>
    <!DOCTYPE Product SYSTEM "Product.dtd">
  6. Speichern Sie das geänderte XML-Dokument unter dem Namen ProductWithDTD.xml.

Mithilfe der DTD das XML-Dokument überprüfen

  1. Erstellen Sie in Visual Studio .NET ein neues Visual C#-Konsolenanwendungsprojekt und nennen Sie es ValidateXml.
  2. Fügen Sie am Anfang von Class1.cs zwei using-Anweisungen hinzu:
    using System.Xml;        // for XmlTextReader and XmlValidatingReader
    using System.Xml.Schema; // for XmlSchemaCollection (which is used later)
  3. Deklarieren Sie in Class1.cs vor dem Start der Methode Main eine boolesche Variable mit dem Namen isValid wie folgt:
    private static bool isValid = true;      // If a validation error occurs,
                                             // set this flag to false in the
                                             // validation event handler.
  4. Erstellen Sie ein XmlTextReader-Objekt, um in der Methode Main ein XML-Dokument aus einer Textdatei lesen zu können, und erstellen Sie danach ein XmlValidatingReader-Objekt, um diese XML-Daten folgendermaßen zu überprüfen:
    XmlTextReader r = new XmlTextReader("C:\\MyFolder\\ProductWithDTD.xml");
    XmlValidatingReader v = new XmlValidatingReader(r);
  5. Die Eigenschaft ValidationType des XmlValidatingReader-Objekts gibt an, welches Überprüfungsverfahren ( DTD , XDR oder Schema ) erforderlich ist. Legen Sie diese Eigenschaft folgendermaßen auf DTD fest:
    v.ValidationType = ValidationType.DTD;
  6. Falls Fehler beim Überprüfen auftreten sollten, generiert der Validating Reader ein Überprüfungsereignis. Fügen Sie folgenden Code hinzu, um einen Überprüfungsereignishandler zu übernehmen (die Methode MyValidationEventHandler werden Sie Schritt 8 implementieren):
    v.ValidationEventHandler += 
       new ValidationEventHandler(MyValidationEventHandler);
  7. Fügen Sie folgenden Code hinzu, um das XML-Dokument zu lesen und zu überprüfen. Falls irgendein Fehler beim Überprüfen auftreten sollte, wird die Methode MyValidationEventHandler aufgerufen, um den Fehler zu lokalisieren. Diese Methode setzt isValid auf False (siehe Schritt 8). Sie können nach der Überprüfung den Status von isValid überprüfen, um festzustellen, ob das Dokument gültig oder ungültig ist.
    while (v.Read())
    {
       // Can add code here to process the content.
    }
    v.Close();
    
    // Check whether the document is valid or invalid.
    if (isValid)
       Console.WriteLine("Document is valid");
    else
       Console.WriteLine("Document is invalid");
  8. Programmieren Sie nach der Methode Main die Methode MyValidationEventHandler wie folgt:
    public static void MyValidationEventHandler(object sender, 
                                                ValidationEventArgs args) 
    {
       isValid = false;
       Console.WriteLine("Validation event\n" + args.Message);
    }
  9. Erstellen Sie die Anwendung und führen Sie sie aus. Die Anwendung sollte die Meldung anzeigen, dass das XML-Dokument gültig ist.
  10. Ändern Sie in Visual Studio .NET das Dokument ProductWithDTD.xml derart, dass es ungültig ist (Löschen Sie z. B. das Element "<ProductName>Rugby jersey</ProductName>").
  11. Führen Sie die Anwendung erneut aus. Es sollte die folgende Fehlermeldung angezeigt werden:
    Überprüfungsereignis
    Der Inhalt des Elements 'Product' ist ungültig. 'ProductName' wurde erwartet.
    In der Datei ///C:/MyFolder/ProductWithDTD.xml(4, 5) trat ein Fehler auf.
    Das Dokument ist ungültig.

Verwendung des XDR-Schemas

Das XDR-Schema erstellen und mit einem XML-Dokument verknüpfen

  1. Erstellen Sie in Visual Studio .NET eine leere Textdatei.
  2. Fügen Sie in die Datei folgende XDR-Schemadefinitionen ein, um die Grammatik des XML-Dokuments zu beschreiben:
    <?xml version='1.0' encoding='utf-16'?>
    <Schema name="ProductSchema" 
            xmlns="urn:schemas-microsoft-com:xml-data"
            xmlns:dt="urn:schemas-microsoft-com:datatypes">
    
       <ElementType name="Product" content="eltOnly">
          <attribute type="ProductID" required="yes"/>
          <element type="ProductName"/>
       </ElementType>
    
       <AttributeType name="ProductID" dt:type="int"/>
       <ElementType name="ProductName" dt:type="string"/>
    </Schema>
  3. Speichern Sie die Datei unter dem Namen Product.xdr in dem Verzeichnis C:\MyFolder.
  4. Öffnen Sie die Originaldatei Product.xml und verknüpfen Sie sie folgendermaßen mit dem XDR-Schema:
    <?xml version='1.0' encoding='utf-16'?>
    <Product ProductID="123" xmlns="x-schema:Product.xdr"> 
       <ProductName>Rugby jersey</ProductName>
    </Product>
  5. Speichern Sie das geänderte XML-Dokument unter dem Namen ProductWithXDR.xml.

Mithilfe des XDR-Schemas das XML-Dokument überprüfen

  1. Ändern Sie Ihre Anwendung so, dass das XmlTextReader-Objekt das Dokument ProductWithXDR.xml folgendermaßen lädt:
    XmlTextReader r = new XmlTextReader("C:\\MyFolder\\ProductWithXDR.xml");
  2. Legen Sie als ValidationType die Option XDR fest, sodass der Validating Reader eine XDR-Überprüfung durchführt:
    v.ValidationType = ValidationType.XDR;
  3. Erstellen Sie die Anwendung und führen Sie sie aus. Die Anwendung sollte die Meldung anzeigen, dass das XML-Dokument gültig ist.
  4. Ändern Sie das Dokument ProductWithXDR.xml, sodass es ungültig ist.
  5. Erstellen Sie die Anwendung erneut und führen Sie sie aus. Es sollte die Meldung angezeigt werden, dass ein Fehler beim Überprüfen auftrat.

Verwendung des XSD-Schemas

Das XSD-Schema erstellen und mit einem XML-Dokument verknüpfen

  1. Erstellen Sie in Visual Studio .NET eine leere Textdatei.
  2. Fügen Sie in die Datei folgende XSD-Schema Definitionen ein, um die Grammatik des XML-Dokuments zu beschreiben:
    <?xml version='1.0' encoding='utf-16'?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
       <xsd:element name="Product">
          <xsd:complexType>
             <xsd:sequence>
                <xsd:element name="ProductName" type="xsd:string"/>
             </xsd:sequence>
             <xsd:attribute name="ProductID" use="required" type="xsd:int"/>
          </xsd:complexType>
       </xsd:element>
    </xsd:schema>
  3. Speichern Sie die Datei unter dem Namen Product.xsd in dem Verzeichnis C:\MyFolder.
  4. Öffnen Sie die Originaldatei Product.xml und verknüpfen Sie sie folgendermaßen mit dem XSD-Schema:
    <?xml version='1.0' encoding='utf-16'?>
    <Product ProductID="123" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:noNamespaceSchemaLocation="Product.xsd">
       <ProductName>Rugby jersey</ProductName>
    </Product>
  5. Speichern Sie das geänderte XML-Dokument unter dem Namen ProductWithXSD.xml.

Mithilfe des XSD-Schemas das XML-Dokument überprüfen

  1. Ändern Sie Ihre Anwendung so, dass das XmlTextReader-Objekt das Dokument ProductWithXSD.xml folgendermaßen lädt:
    XmlTextReader r = new XmlTextReader("C:\\MyFolder\\ProductWithXSD.xml");
  2. Legen Sie das Überprüfungsverfahren ValidationType auf Schema fest, sodass der Validating Reader eine XSD-Schemaüberprüfung durchführt:
    v.ValidationType = ValidationType.Schema;
  3. Erstellen Sie die Anwendung und führen Sie sie aus, um das XSD-Schema zur Überprüfung des XML-Dokuments zu verwenden.

Namespaces im XSD-Schema verwenden

  1. Öffnen Sie in Visual Studio .NET das Dokument ProductWithXSD.xml.
  2. Deklarieren Sie in dem Dokument den Standard-Namespace urn:MyNamespace. Ändern Sie des Weiteren die XSD-Verknüpfung, sodass sie in diesem Namespace das XSD-Schema zur Überprüfung des Inhalts angibt.
    <?xml version='1.0' encoding='utf-16'?>
    <Product ProductID="123" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns="urn:MyNamespace"
             xsi:schemaLocation="urn:MyNamespace Product.xsd">
       <ProductName>Rugby jersey</ProductName>
    </Product>
  3. Speichern Sie Ihre in dem Dokument ProductWithXSD.xml vorgenommenen Änderungen.
  4. Öffnen Sie die Datei Product.xsd. Ändern Sie den Anfangstag <xsd:schema> folgendermaßen, damit das Schema für den Namespace urn:MyNamespace gilt:
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                targetNamespace="urn:MyNamespace"
                elementFormDefault="qualified">
  5. Speichern Sie Ihre Änderungen in der Datei Product.xsd.
  6. Erstellen Sie die Anwendung und führen Sie sie aus, um das XSD-Schema zur Überprüfung des XML-Dokuments zu verwenden.

Namespaces zwischenspeichern

  1. Öffnen Sie in Visual Studio .NET Class1.cs. Erstellen Sie am Anfang der Methode Main ein Objekt XmlSchemaCollection wie folgt:
    XmlSchemaCollection cache = new XmlSchemaCollection();
  2. Mithilfe des Objekts XmlSchemaCollection können Sie Schemata im Speicher zwischenspeichern, um die Leistung zu verbessern. Jedes Schema ist mit einem anderen Namespace verknüpft. Fügen Sie folgenden Code hinzu, um die Datei Product.xsd zwischenzuspeichern:
    cache.Add("urn:MyNamespace", "C:\\MyFolder\\Product.xsd");
  3. Fügen Sie nach dem Code folgende Anweisung zur Erstellung des Objekts XmlValidatingReader hinzu, um den Schemata-Zwischenspeicher zum Objekt XmlValidatingReader hinzufügen zu können, damit der Reader die Schemata im Speicher verwenden kann:
    v.Schemas.Add(cache);

Korrekte Ausführung sicherstellen

  1. Erstellen Sie die Anwendung und führen Sie sie aus.
  2. Stellen Sie sicher, dass das XML-Dokument weiterhin im XSD-Schemakontext überprüft wird.
  3. Ändern Sie das Dokument ProductWithXSD.xml so, dass es ungültig ist.
  4. Prüfen Sie, dass die Anwendung diese Fehler beim Überprüfen ermittelt.

Eigenschaften

Artikel-ID: 307379 - Geändert am: Mittwoch, 29. Oktober 2003 - Version: 1.4
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Keywords: 
kbhowtomaster KB307379
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