Jak ověřit dokument XML pomocí DTD, XDR nebo XSD v aplikaci Visual C# .NET

Souhrn

Tento článek ukazuje, jak použít definice typu dokumentu (DTD), schéma Microsoft XML (XSF) nebo schématu jazyka definici schématu XML (XSD) dokumentu Extensible Markup Language (XML). Tento článek také popisuje způsob použití třídy XmlValidatingReader třídy ověřit dokument XML proti zadané gramatiky, jakož i použití třídy kolekci XmlSchemaCollection schémata mezipaměti v paměti s cílem optimalizovat XML ověření.

Dokumenty XML obsahuje elementy a atributy. Poskytují flexibilní a účinný způsob pro výměnu dat mezi aplikacemi a organizace. K určení přípustných struktura a obsah dokumentu XML, můžete napsat DTD, schéma XDR nebo schématu XSD. Schémata XSD jsou upřednostňovaný způsob určení gramatika XML v Microsoft rozhraní.NET Framework, ale DTD a XDR schémata jsou také podporovány.

Požadavky

Tento článek předpokládá, že jste obeznámeni s následující témata:

  • Syntaxe jazyka Microsoft Visual C# .NET nebo Microsoft Visual Basic .NET
  • Koncepce XML, včetně problémů týkajících se ověření

Vytvoření dokumentu XML

  1. Spusťte aplikaci Visual Studio .NET.
  2. Vytvořte nový XML soubor v místním počítači.
  3. Přidejte následující data dokumentu XML představující produktů v katalogu:
    <Product ProductID="123">   <ProductName>Rugby jersey</ProductName>
    </Product>

  4. Uložte soubor jako Product.xml v nové složce s názvem C:\MyFolder.

Použití DTD

Vytvořit DTD a propojit dokument XML

  1. V aplikaci Visual Studio .NET vytvořte prázdný textový soubor.
  2. Přidáte následující deklarace DTD souboru pro popis gramatiky v dokumentu XML:
    <!ELEMENT Product (ProductName)><!ATTLIST Product ProductID CDATA #REQUIRED>
    <!ELEMENT ProductName (#PCDATA)>

  3. Uložte soubor jako Product.dtd v C:\MyFolder adresář.
  4. V aplikaci Visual Studio .NET spusťte Product.xml.
  5. K hornímu okraji Product.xml propojit dokument XML DTD souboru přidejte následující DOCTYPE prohlášení:
    <?xml version="1.0"?><!DOCTYPE Product SYSTEM "Product.dtd">

  6. Uložte změněný dokument XML jako ProductWithDTD.xml.

Ověřit dokument XML pomocí DTD

  1. V aplikaci Visual Studio .NET vytvořte nový projekt Visual C# konzolové aplikace s názvem ValidateXml.
  2. Přidáte dva příkazy pomocí začátek Class1.cs následujícím způsobem:
    using System.Xml;        // for XmlTextReader and XmlValidatingReaderusing System.Xml.Schema; // for XmlSchemaCollection (which is used later)

  3. V Class1.cs deklarujte Logická proměnná s názvem isValid před zahájením hlavní metoda takto:
    private static bool isValid = true;      // If a validation error occurs,                                         // set this flag to false in the
    // validation event handler.
  4. Vytvořit XmlTextReader objekt ke čtení dokumentu XML z textového souboru v metodě Main a potom vytvořit třídy XmlValidatingReader pro ověření dat XML takto:
    XmlTextReader r = new XmlTextReader("C:\\MyFolder\\ProductWithDTD.xml");XmlValidatingReader v = new XmlValidatingReader(r);

  5. ValidationType vlastnost třídy XmlValidatingReader objektu určuje typ ověření, který je vyžadován (DTD, XDRnebo schématu). Nastavte tuto vlastnost na DTD takto:
    v.ValidationType = ValidationType.DTD;
  6. Při výskytu chyby ověření, ověření čtenáře vygeneruje událost ověření. Přidejte následující kód pro registraci obslužné rutiny události ověřování (je implementovat metodu MyValidationEventHandler v kroku 8):
    v.ValidationEventHandler +=    new ValidationEventHandler(MyValidationEventHandler);

  7. Přidejte následující kód přečíst a ověřit dokument XML. Při výskytu chyby ověření, MyValidationEventHandler nazývá řeší chybu. Tento způsob nastaví isValid na hodnotu false (viz krok 8). Můžete zkontrolovat stav isValid po ověření, zda dokument není platný nebo je neplatný.
    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. Po hlavní metoda zapsat MyValidationEventHandler metoda takto:
    public static void MyValidationEventHandler(object sender,                                             ValidationEventArgs args) 
    {
    isValid = false;
    Console.WriteLine("Validation event\n" + args.Message);
    }

  9. Sestavte a spusťte aplikaci. Aplikace by měla zprávu, že je platný dokument XML.
  10. V aplikaci Visual Studio .NET, změna ProductWithDTD.xml na potvrzena (například odstranit, "< ProductName > Rugby jersey < / ProductName >" element).
  11. Spusťte aplikaci znovu. By měl zobrazit následující chybová zpráva:
    Ověření události
    Element "Výrobek" má neplatný obsah. Očekává "ProductName".
    V file:///C:/MyFolder/ProductWithDTD.xml(4, 5) došlo k chybě.
    Dokument není platný

Pomocí schématu XDR

Vytvořit schéma XDR a propojit dokument XML

  1. V aplikaci Visual Studio .NET vytvořte prázdný textový soubor.
  2. Přidejte následující definice schématu XDR soubor pro popis gramatiky v dokumentu XML:
    <?xml version="1.0"?><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. Uložte soubor jako Product.xdr v C:\MyFolder adresář.
  4. Otevřete původní soubor Product.xml a propojit ji schéma XDR takto:
    <?xml version="1.0"?><Product ProductID="123" xmlns="x-schema:Product.xdr"> 
    <ProductName>Rugby jersey</ProductName>
    </Product>

  5. Uložte změněný dokument XML jako ProductWithXDR.xml.

Ověřit dokument XML pomocí schématu XDR

  1. Upravte aplikaci tak, aby XmlTextReader načte ProductWithXDR.xml takto:
    XmlTextReader r = new XmlTextReader("C:\\MyFolder\\ProductWithXDR.xml");
  2. Takže XDR ověřování provádí ověřování reader nastavte ValidationType XDR :
    v.ValidationType = ValidationType.XDR;
  3. Sestavte a spusťte aplikaci. Aplikace by měla zprávu, že je platný dokument XML.
  4. Upravte ProductWithXDR.xml na potvrzena.
  5. Sestavte a spusťte aplikaci znovu. Mělo by se zobrazit chyby ověřování.

Pomocí schématu XSD

Vytvořit schéma XSD a odkaz na dokument XML

  1. V aplikaci Visual Studio .NET vytvořte prázdný textový soubor.
  2. Přidejte následující definice schématu XSD soubor pro popis gramatiky v dokumentu XML:
    <?xml version="1.0"?><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. Uložte soubor jako Product.xsd v C:\MyFolder adresář.
  4. Otevřete původní Product.xml a propojit ji schéma XSD takto:
    <?xml version="1.0"?><Product ProductID="123" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="Product.xsd">
    <ProductName>Rugby jersey</ProductName>
    </Product>

  5. Uložte změněný dokument XML jako ProductWithXSD.xml.

Ověřit dokument XML pomocí schématu XSD

  1. Upravte aplikaci tak, aby XmlTextReader načte ProductWithXSD.xml takto:
    XmlTextReader r = new XmlTextReader("C:\\MyFolder\\ProductWithXSD.xml");
  2. Nastavte ValidationType schéma tak, aby ověřování reader provede ověření schématu XSD:
    v.ValidationType = ValidationType.Schema;
  3. Sestavit a spustit aplikaci ověřit dokument XML pomocí schématu XSD.

Použití názvů ve schématu XSD

  1. V aplikaci Visual Studio.NET otevřete ProductWithXSD.xml.
  2. Deklarace oboru názvů výchozí Název urn: MyNamespace v dokumentu. Kromě toho změňte odkaz XSD, takže Určuje schéma XSD pro ověření obsahu v tomto oboru názvů:
    <?xml version="1.0"?><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. Provedené změny uložte ProductWithXSD.xml.
  4. Otevřete Product.xsd. Takto upravte počáteční značku < XSD > tak, že platí schéma pro obor názvů urn: MyNamespace:
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"            targetNamespace="urn:MyNamespace"
    elementFormDefault="qualified">

  5. Uložte změny do Product.xsd.
  6. Sestavit a spustit aplikaci ověřit dokument XML pomocí schématu XSD.

Obory názvů v mezipaměti

  1. V aplikaci Visual Studio .NET otevřete Class1.cs. Vytvořte kolekci XmlSchemaCollection objekt na začátku hlavní metoda takto:
    XmlSchemaCollection cache = new XmlSchemaCollection();
  2. Kolekci XmlSchemaCollection objekt umožňuje schémat mezipaměti v paměti pro zvýšení výkonu. Každé schéma je přidružen jiný obor názvů. Přidejte následující kód do mezipaměti Product.xsd:
    cache.Add("urn:MyNamespace", "C:\\MyFolder\\Product.xsd");
  3. Přidejte následující příkaz po kód, který vytvoří
    Třídy XmlValidatingReader objekt, který chcete přidat do mezipaměti schématu třídy XmlValidatingReader , aby čtenáři mohli používat schémata v paměti:
    v.Schemas.Add(cache);

Ověřte, zda funguje

  1. Sestavte a spusťte aplikaci.
  2. Ověřte stále ověření dokumentu XML proti schématu XSD.
  3. Změňte ProductWithXSD.xml na potvrzena.
  4. Zkontrolujte, zda aplikace rozpozná tyto chyby ověření.
Vlastnosti

ID článku: 307379 - Poslední kontrola: 20. 1. 2017 - Revize: 1

Váš názor