XmlDocument.Validate Methode

Definitie

Valideert de XmlDocument schema's voor XML Schema Definition Language (XSD) in de Schemas eigenschap.

Overloads

Name Description
Validate(ValidationEventHandler)

Valideert de XmlDocument schema's voor XML Schema Definition Language (XSD) in de Schemas eigenschap.

Validate(ValidationEventHandler, XmlNode)

Valideert het XmlNode object dat is opgegeven op basis van de XSD-schema's (XML Schema Definition Language) in de Schemas eigenschap.

Validate(ValidationEventHandler)

Bron:
XmlDocument.cs
Bron:
XmlDocument.cs
Bron:
XmlDocument.cs
Bron:
XmlDocument.cs
Bron:
XmlDocument.cs

Valideert de XmlDocument schema's voor XML Schema Definition Language (XSD) in de Schemas eigenschap.

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)

Parameters

validationEventHandler
ValidationEventHandler

Het ValidationEventHandler object dat informatie ontvangt over schemavalidatiewaarschuwingen en -fouten.

Uitzonderingen

Er is een schemavalidatiegebeurtenis opgetreden en er is geen ValidationEventHandler object opgegeven.

Voorbeelden

Het volgende voorbeeld illustreert het gebruik van de Validate methode. In het voorbeeld wordt een XmlDocument xsD-schema gemaakt dat een gekoppeld XSD-schema bevat met behulp van de XmlReaderSettings en XmlReader objecten. In het voorbeeld wordt vervolgens de XPathNavigator klasse gebruikt om de getypte waarde van een element in het XML-document dat een schemavalidatiefout genereert, onjuist te wijzigen.

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

In het voorbeeld worden de contosoBooks.xml en contosoBooks.xsd bestanden als invoer gebruikt.

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

Opmerkingen

Met Validate de methode worden de XML-gegevens in de XmlDocument xml-gegevens gevalideerd op basis van de schema's in de Schemas eigenschap. De Validate methode voert infoset-uitbreidingen uit. Na een geslaagde validatie worden de standaardinstellingen voor schema's toegepast, worden tekstwaarden indien nodig geconverteerd naar atomische waarden en worden typegegevens gekoppeld aan gevalideerde informatie-items. Het resultaat is een eerder niet-getypte XML-substructuur in de XmlDocument vervangen door een getypte substructuur.

Houd rekening met de volgende punten wanneer u de Validate methode gebruikt:

  • Hints voor schemalocatie zoals xsi:schemaLocation of xsi:noNamespaceSchemaLocation worden genegeerd.
  • Inlineschema's worden genegeerd.
  • Als er tijdens de validatie fouten optreden bij de schemavalidatie, wordt het XmlDocument gedeeltelijk gevalideerd met sommige knooppunten met de juiste typegegevens en sommige zonder.
  • Het validatieproces omvat het controleren op uniekheid en verwijzingsbeperkingen (xs:ID, xs:IDREF, xs:key, xs:keyrefen ).xs:unique

Van toepassing op

Validate(ValidationEventHandler, XmlNode)

Bron:
XmlDocument.cs
Bron:
XmlDocument.cs
Bron:
XmlDocument.cs
Bron:
XmlDocument.cs
Bron:
XmlDocument.cs

Valideert het XmlNode object dat is opgegeven op basis van de XSD-schema's (XML Schema Definition Language) in de Schemas eigenschap.

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)

Parameters

validationEventHandler
ValidationEventHandler

Het ValidationEventHandler object dat informatie ontvangt over schemavalidatiewaarschuwingen en -fouten.

nodeToValidate
XmlNode

Het XmlNode object dat is gemaakt van een XmlDocument te valideren object.

Uitzonderingen

De XmlNode objectparameter is niet gemaakt op basis van een XmlDocument.

De XmlNode objectparameter is geen element, kenmerk, documentfragment of het hoofdknooppunt.

Er is een schemavalidatiegebeurtenis opgetreden en er is geen ValidationEventHandler object opgegeven.

Voorbeelden

Zie de methode voor een voorbeeld van de ValidateValidate methode.

Opmerkingen

Met Validate de methode worden de XML-gegevens in het XmlNode object gevalideerd op basis van de schema's in de Schemas eigenschap. De Validate methode voert infoset-uitbreidingen uit. Na een geslaagde validatie worden de standaardinstellingen voor schema's toegepast, worden tekstwaarden indien nodig geconverteerd naar atomische waarden en worden typegegevens gekoppeld aan gevalideerde informatie-items. Het resultaat is een eerder niet-getypte XML-substructuur in de XmlDocument vervangen door een getypte substructuur.

Hier volgen belangrijke opmerkingen bij het gebruik van de Validate methode.

  • Hints voor schemalocatie zoals xsi:schemaLocation of xsi:noNamespaceSchemaLocation worden genegeerd.

  • Inlineschema's worden genegeerd.

  • Als er tijdens de validatie fouten optreden bij de schemavalidatie, wordt het XmlDocument gedeeltelijk gevalideerd met sommige knooppunten met de juiste typegegevens en sommige zonder.

Als het knooppunt dat moet worden gevalideerd het hoofdknooppunt is, omvat het validatieproces het controleren op uniekheid en verwijzingsbeperkingen (xs:ID, xs:IDREF, xs:key, xs:keyrefen ); xs:uniqueanders worden de uniekheid en verwijzingsbeperkingen weggelaten.

Van toepassing op