XmlDocument.Validate XmlDocument.Validate XmlDocument.Validate Method

Definition

Validiert das XmlDocument anhand der in der Schemas-Eigenschaft enthaltenen XSD-Schemas (XML Schema Definition).Validates the XmlDocument against the XML Schema Definition Language (XSD) schemas contained in the Schemas property.

Überlädt

Validate(ValidationEventHandler) Validate(ValidationEventHandler) Validate(ValidationEventHandler)

Validiert das XmlDocument anhand der in der Schemas-Eigenschaft enthaltenen XSD-Schemas (XML Schema Definition).Validates the XmlDocument against the XML Schema Definition Language (XSD) schemas contained in the Schemas property.

Validate(ValidationEventHandler, XmlNode) Validate(ValidationEventHandler, XmlNode) Validate(ValidationEventHandler, XmlNode)

Validiert das angegebene XmlNode-Objekt anhand der in der Schemas-Eigenschaft enthaltenen XSD-Schemas (XML Schema Definition).Validates the XmlNode object specified against the XML Schema Definition Language (XSD) schemas in the Schemas property.

Validate(ValidationEventHandler) Validate(ValidationEventHandler) Validate(ValidationEventHandler)

Validiert das XmlDocument anhand der in der Schemas-Eigenschaft enthaltenen XSD-Schemas (XML Schema Definition).Validates the XmlDocument against the XML Schema Definition Language (XSD) schemas contained in the Schemas property.

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

Parameter

validationEventHandler
ValidationEventHandler ValidationEventHandler ValidationEventHandler

Das ValidationEventHandler-Objekt, das Informationen zu Warnungen und Fehlern der Schemavalidierung empfängt.The ValidationEventHandler object that receives information about schema validation warnings and errors.

Ausnahmen

Ein Schemavalidierungsereignis ist aufgetreten, und es wurde kein ValidationEventHandler-Objekt angegeben.A schema validation event occurred and no ValidationEventHandler object was specified.

Beispiele

Im folgenden Beispiel wird die Verwendung der Validate-Methode veranschaulicht.The following example illustrates use of the Validate method. Im Beispiel wird ein XmlDocument erstellt, das ein zugeordnetes XSD XmlReaderSettings - XmlReader Schema mit den-und-Objekten enthält.The example creates an XmlDocument that contains an associated XSD schema using the XmlReaderSettings and XmlReader objects. Im Beispiel wird dann mithilfe XPathNavigator der-Klasse der typisierte Wert eines Elements im XML-Dokument fälschlicherweise geändert, wodurch ein Schema Validierungs Fehler erzeugt wird.The example then uses the XPathNavigator class to incorrectly modify the typed value of an element in the XML document generating a schema validation error.

#using <System.Xml.dll>

using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;
using namespace System::Xml::XPath;

class XPathValidation
{
public:

    static void Main()
    {
        try
        {
            XmlReaderSettings^ settings = gcnew XmlReaderSettings();
            settings->Schemas->Add("http://www.contoso.com/books", "contosoBooks.xsd");
            settings->ValidationType = ValidationType::Schema;

            XmlReader^ reader = XmlReader::Create("contosoBooks.xml", settings);
            XmlDocument^ document = gcnew XmlDocument();
            document->Load(reader);

            ValidationEventHandler^ eventHandler = gcnew ValidationEventHandler(ValidationEventHandlerOne);

            // 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 ValidationEventHandlerOne(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;
        }

    }
};

int main()
{
    XPathValidation::Main();
    Console::ReadLine();
    return 0;
};
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

Im Beispiel werden die contosoBooks.xml Dateien contosoBooks.xsd und als Eingabe angenommen.The example takes the contosoBooks.xml and contosoBooks.xsd files as input.

<?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>

Hinweise

Die Validate -Methode überprüft die XML-Daten in XmlDocument der mit den Schemas, die Schemas in der-Eigenschaft enthalten sind.The Validate method validates the XML data in the XmlDocument against the schemas contained in the Schemas property. Die Validate -Methode führt die Infoset-Erweiterung aus.The Validate method performs infoset augmentation. Vor der erfolgreichen Validierung werden standardmäßig Schema Standardwerte angewendet, Textwerte werden bei Bedarf in atomarische Werte konvertiert, und Typinformationen sind validierten Informations Elementen zugeordnet.Specifically, after successful validation, schema defaults are applied, text values are converted to atomic values as necessary, and type information is associated with validated information items. Das Ergebnis ist eine zuvor nicht typisierte XML-Unterstruktur in, XmlDocument die durch eine typisierte Unterstruktur ersetzt wurde.The result is a previously un-typed XML sub-tree in the XmlDocument replaced with a typed sub-tree.

Beachten Sie die folgenden wichtigen Hinweise, wenn Sie die Validate -Methode verwenden.The following are important notes to consider when using the Validate method.

  • Schema Speicherort Hinweise xsi:schemaLocation wie xsi:noNamespaceSchemaLocation oder werden ignoriert.Schema location hints like xsi:schemaLocation or xsi:noNamespaceSchemaLocation are ignored.

  • Inline Schemas werden ignoriert.Inline schemas are ignored.

  • Wenn während der Validierung Schema Validierungs Fehler auftreten XmlDocument , wird der teilweise mit einigen Knoten mit korrekten Typinformationen und einigen ohne überprüft.If schema validation errors occur during validation the XmlDocument becomes partially validated with some nodes with correct type information and some without.

  • Der Überprüfungsprozess umfasst die Überprüfung auf Eindeutigkeit undxs:IDVerweis xs:IDREFEinschränkungen xs:key( xs:keyref,, xs:unique, und).The validation process includes checking for uniqueness and reference constraints (xs:ID, xs:IDREF, xs:key, xs:keyref, and xs:unique).

Validate(ValidationEventHandler, XmlNode) Validate(ValidationEventHandler, XmlNode) Validate(ValidationEventHandler, XmlNode)

Validiert das angegebene XmlNode-Objekt anhand der in der Schemas-Eigenschaft enthaltenen XSD-Schemas (XML Schema Definition).Validates the XmlNode object specified against the XML Schema Definition Language (XSD) schemas in the Schemas property.

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

Parameter

validationEventHandler
ValidationEventHandler ValidationEventHandler ValidationEventHandler

Das ValidationEventHandler-Objekt, das Informationen zu Warnungen und Fehlern der Schemavalidierung empfängt.The ValidationEventHandler object that receives information about schema validation warnings and errors.

nodeToValidate
XmlNode XmlNode XmlNode

Das XmlNode-Objekt, das aus einem zu validierenden XmlDocument erstellt wurde.The XmlNode object created from an XmlDocument to validate.

Ausnahmen

Der XmlNode-Objektparameter wurde nicht aus einem XmlDocument erstellt.The XmlNode object parameter was not created from an XmlDocument.

Der XmlNode-Objektparameter ist kein Element, Attribut, Dokumentfragment oder der Stammknoten.The XmlNode object parameter is not an element, attribute, document fragment, or the root node.

Ein Schemavalidierungsereignis ist aufgetreten, und es wurde kein ValidationEventHandler-Objekt angegeben.A schema validation event occurred and no ValidationEventHandler object was specified.

Beispiele

Ein Beispiel für die Validate -Methode finden Sie unter der Validate -Methode.For an example of the Validate method, see the Validate method.

Hinweise

Die Validate -Methode überprüft die XML-Daten XmlNode im-Objekt anhand der in der Schemas -Eigenschaft enthaltenen Schemas.The Validate method validates the XML data in the XmlNode object against the schemas contained in the Schemas property. Die Validate -Methode führt die Infoset-Erweiterung aus.The Validate method performs infoset augmentation. Vor der erfolgreichen Validierung werden standardmäßig Schema Standardwerte angewendet, Textwerte werden bei Bedarf in atomarische Werte konvertiert, und Typinformationen sind validierten Informations Elementen zugeordnet.Specifically, after successful validation, schema defaults are applied, text values are converted to atomic values as necessary, and type information is associated with validated information items. Das Ergebnis ist eine zuvor nicht typisierte XML-Unterstruktur in, XmlDocument die durch eine typisierte Unterstruktur ersetzt wurde.The result is a previously un-typed XML sub-tree in the XmlDocument replaced with a typed sub-tree.

Beachten Sie die folgenden wichtigen Hinweise, wenn Sie die Validate -Methode verwenden.The following are important notes to consider when using the Validate method.

  • Schema Speicherort Hinweise xsi:schemaLocation wie xsi:noNamespaceSchemaLocation oder werden ignoriert.Schema location hints like xsi:schemaLocation or xsi:noNamespaceSchemaLocation are ignored.

  • Inline Schemas werden ignoriert.Inline schemas are ignored.

  • Wenn während der Validierung Schema Validierungs Fehler auftreten XmlDocument , wird der teilweise mit einigen Knoten mit korrekten Typinformationen und einigen ohne überprüft.If schema validation errors occur during validation the XmlDocument becomes partially validated with some nodes with correct type information and some without.

Wenn es sich bei dem zu überprüfenden Knoten um den Stamm Knoten handelt, umfasst der Überprüfungsprozess diexs:IDÜberprüfung auf xs:keyrefEindeutigkeit xs:uniqueund Verweis Einschränkungen (, xs:IDREF, xs:key, und); andernfalls Eindeutigkeit und Verweis. Einschränkungen werden ausgelassen.If the node to validate is the root node, the validation process includes checking for uniqueness and reference constraints (xs:ID, xs:IDREF, xs:key, xs:keyref, and xs:unique); otherwise, uniqueness and reference constraints are omitted.

Gilt für: