XmlDocument.Validate Metódus

Definíció

Ellenőrzi a XmlDocument tulajdonságban található XML-sémadefiníciós nyelv (XSD) sémák alapján.Schemas

Túlterhelések

Name Description
Validate(ValidationEventHandler)

Ellenőrzi a XmlDocument tulajdonságban található XML-sémadefiníciós nyelv (XSD) sémák alapján.Schemas

Validate(ValidationEventHandler, XmlNode)

Ellenőrzi a XmlNode tulajdonság XML-sémadefiníciós (XSD) sémáiban Schemas megadott objektumot.

Validate(ValidationEventHandler)

Forrás:
XmlDocument.cs
Forrás:
XmlDocument.cs
Forrás:
XmlDocument.cs
Forrás:
XmlDocument.cs
Forrás:
XmlDocument.cs

Ellenőrzi a XmlDocument tulajdonságban található XML-sémadefiníciós nyelv (XSD) sémák alapján.Schemas

public:
 void Validate(System::Xml::Schema::ValidationEventHandler ^ validationEventHandler);
public void Validate(System.Xml.Schema.ValidationEventHandler? validationEventHandler);
public void Validate(System.Xml.Schema.ValidationEventHandler validationEventHandler);
member this.Validate : System.Xml.Schema.ValidationEventHandler -> unit
Public Sub Validate (validationEventHandler As ValidationEventHandler)

Paraméterek

validationEventHandler
ValidationEventHandler

Az ValidationEventHandler az objektum, amely információt kap a sémaérvényesítési figyelmeztetésekről és hibákról.

Kivételek

Sémaérvényesítési esemény történt, és nem ValidationEventHandler adott meg objektumot.

Példák

Az alábbi példa a Validate metódus használatát szemlélteti. A példa létrehoz egy XmlDocument társított XSD-sémát az és XmlReaderSettings az XmlReader objektumok használatával. A példa ezután az XPathNavigator osztály használatával helytelenül módosítja az XML-dokumentum egy elemének begépelt értékét, és sémaérvényesítési hibát okoz.

using System;
using System.Xml;
using System.Xml.Schema;
using System.Xml.XPath;

class XPathValidation
{
    static void Main()
    {
        try
        {
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd");
            settings.ValidationType = ValidationType.Schema;

            XmlReader reader = XmlReader.Create("contosoBooks.xml", settings);
            XmlDocument document = new XmlDocument();
            document.Load(reader);

            ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationEventHandler);

            // the following call to Validate succeeds.
            document.Validate(eventHandler);

            // add a node so that the document is no longer valid
            XPathNavigator navigator = document.CreateNavigator();
            navigator.MoveToFollowing("price", "http://www.contoso.com/books");
            XmlWriter writer = navigator.InsertAfter();
            writer.WriteStartElement("anotherNode", "http://www.contoso.com/books");
            writer.WriteEndElement();
            writer.Close();

            // the document will now fail to successfully validate
            document.Validate(eventHandler);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

    static void ValidationEventHandler(object sender, ValidationEventArgs e)
    {
        switch (e.Severity)
        {
            case XmlSeverityType.Error:
                Console.WriteLine("Error: {0}", e.Message);
                break;
            case XmlSeverityType.Warning:
                Console.WriteLine("Warning {0}", e.Message);
                break;
        }
    }
}
Imports System.Xml
Imports System.Xml.Schema
Imports System.Xml.XPath

Class XPathValidation

    Shared Sub Main()

        Try

            Dim settings As XmlReaderSettings = New XmlReaderSettings()
            settings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd")
            settings.ValidationType = ValidationType.Schema

            Dim reader As XmlReader = XmlReader.Create("contosoBooks.xml", settings)
            Dim document As XmlDocument = New XmlDocument()
            document.Load(reader)

            Dim eventHandler As ValidationEventHandler = New ValidationEventHandler(AddressOf ValidationEventHandler)

            ' the following call to Validate succeeds.
            document.Validate(eventHandler)

            ' add a node so that the document is no longer valid
            Dim navigator As XPathNavigator = document.CreateNavigator()
            navigator.MoveToFollowing("price", "http://www.contoso.com/books")
            Dim writer As XmlWriter = navigator.InsertAfter()
            writer.WriteStartElement("anotherNode", "http://www.contoso.com/books")
            writer.WriteEndElement()
            writer.Close()

            ' the document will now fail to successfully validate
            document.Validate(eventHandler)

        Catch ex As Exception

            Console.WriteLine(ex.Message)

        End Try

    End Sub

    Shared Sub ValidationEventHandler(ByVal sender As Object, ByVal e As ValidationEventArgs)

        Select Case e.Severity
            Case XmlSeverityType.Error
                Console.WriteLine("Error: {0}", e.Message)
            Case XmlSeverityType.Warning
                Console.WriteLine("Warning {0}", e.Message)
        End Select

    End Sub

End Class

A példa bemenetként használja a fájlokat és contosoBooks.xml a contosoBooks.xsd fájlokat.

<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
        <title>The Autobiography of Benjamin Franklin</title>
        <author>
            <first-name>Benjamin</first-name>
            <last-name>Franklin</last-name>
        </author>
        <price>8.99</price>
    </book>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
        <author>
            <first-name>Herman</first-name>
            <last-name>Melville</last-name>
        </author>
        <price>11.99</price>
    </book>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>
        <author>
            <name>Plato</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="bookstore">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" name="book">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="title" type="xs:string" />
                            <xs:element name="author">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element minOccurs="0" name="name" type="xs:string" />
                                        <xs:element minOccurs="0" name="first-name" type="xs:string" />
                                        <xs:element minOccurs="0" name="last-name" type="xs:string" />
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="price" type="xs:decimal" />
                        </xs:sequence>
                        <xs:attribute name="genre" type="xs:string" use="required" />
                        <xs:attribute name="publicationdate" type="xs:date" use="required" />
                        <xs:attribute name="ISBN" type="xs:string" use="required" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Megjegyzések

A Validate metódus ellenőrzi a tulajdonságban XmlDocumentSchemas található sémák xml-adatait. A Validate metódus az információshalmaz-bővítést hajtja végre. A sikeres érvényesítés után a séma alapértelmezett értékei lesznek alkalmazva, a szöveges értékek szükség szerint atomi értékekké alakulnak, és a típusadatok az érvényesített információs elemekhez lesznek társítva. Az eredmény egy korábban nem gépelt XML-alfa, amelyet egy XmlDocument beírt alfára cserélt.

A metódus használatakor vegye figyelembe a következő szempontokat Validate :

  • A séma helyének tippjei hasonlók xsi:schemaLocation vagy xsi:noNamespaceSchemaLocation figyelmen kívül vannak hagyva.
  • A beágyazott sémák figyelmen kívül lesznek hagyva.
  • Ha az ellenőrzés során sémaérvényesítési hibák lépnek fel, a rendszer részben érvényesíti a XmlDocument helyes típusinformációkat tartalmazó csomópontokat, és némelyiket nem.
  • Az érvényesítési folyamat magában foglalja az egyediség és a hivatkozási korlátozások (xs:ID, , xs:IDREF, xs:keyxs:keyrefés xs:unique) ellenőrzését.

A következőre érvényes:

Validate(ValidationEventHandler, XmlNode)

Forrás:
XmlDocument.cs
Forrás:
XmlDocument.cs
Forrás:
XmlDocument.cs
Forrás:
XmlDocument.cs
Forrás:
XmlDocument.cs

Ellenőrzi a XmlNode tulajdonság XML-sémadefiníciós (XSD) sémáiban Schemas megadott objektumot.

public:
 void Validate(System::Xml::Schema::ValidationEventHandler ^ validationEventHandler, System::Xml::XmlNode ^ nodeToValidate);
public void Validate(System.Xml.Schema.ValidationEventHandler? validationEventHandler, System.Xml.XmlNode nodeToValidate);
public void Validate(System.Xml.Schema.ValidationEventHandler validationEventHandler, System.Xml.XmlNode nodeToValidate);
member this.Validate : System.Xml.Schema.ValidationEventHandler * System.Xml.XmlNode -> unit
Public Sub Validate (validationEventHandler As ValidationEventHandler, nodeToValidate As XmlNode)

Paraméterek

validationEventHandler
ValidationEventHandler

Az ValidationEventHandler az objektum, amely információt kap a sémaérvényesítési figyelmeztetésekről és hibákról.

nodeToValidate
XmlNode

Az XmlNode ellenőrzéshez létrehozott XmlDocument objektum.

Kivételek

Az XmlNode objektumparaméter nem egy XmlDocument.

Az XmlNode objektumparaméter nem elem, attribútum, dokumentumtöredék vagy gyökércsomópont.

Sémaérvényesítési esemény történt, és nem ValidationEventHandler adott meg objektumot.

Példák

A metódusra példaként Validate tekintse meg a metódust Validate .

Megjegyzések

A Validate metódus ellenőrzi az objektum XML-adatait XmlNode a tulajdonságban Schemas található sémákkal szemben. A Validate metódus az információshalmaz-bővítést hajtja végre. A sikeres érvényesítés után a séma alapértelmezett értékei lesznek alkalmazva, a szöveges értékek szükség szerint atomi értékekké alakulnak, és a típusadatok az érvényesített információs elemekhez lesznek társítva. Az eredmény egy korábban nem gépelt XML-alfa, amelyet egy XmlDocument beírt alfára cserélt.

A módszer használatakor Validate az alábbi fontos megjegyzéseket érdemes figyelembe venni.

  • A séma helyének tippjei hasonlók xsi:schemaLocation vagy xsi:noNamespaceSchemaLocation figyelmen kívül vannak hagyva.

  • A beágyazott sémák figyelmen kívül lesznek hagyva.

  • Ha az ellenőrzés során sémaérvényesítési hibák lépnek fel, a rendszer részben érvényesíti a XmlDocument helyes típusinformációkat tartalmazó csomópontokat, és némelyiket nem.

Ha az érvényesítendő csomópont a gyökércsomópont, az ellenőrzési folyamat magában foglalja az egyediség és a hivatkozási kényszerek (xs:ID, , xs:IDREF, xs:key, xs:keyrefés xs:unique) ellenőrzését, ellenkező esetben az egyediség és a hivatkozási korlátozások nem lesznek megadva.

A következőre érvényes: