Udostępnij za pośrednictwem


XmlDocument.Validate Metoda

Definicja

Weryfikuje XmlDocument schematy języka XSD (XML Schema Definition Language) zawarte we Schemas właściwości .

Przeciążenia

Nazwa Opis
Validate(ValidationEventHandler)

Weryfikuje XmlDocument schematy języka XSD (XML Schema Definition Language) zawarte we Schemas właściwości .

Validate(ValidationEventHandler, XmlNode)

Sprawdza poprawność XmlNode obiektu określonego względem schematów języka XSD (XML Schema Definition Language) we Schemas właściwości .

Validate(ValidationEventHandler)

Źródło:
XmlDocument.cs
Źródło:
XmlDocument.cs
Źródło:
XmlDocument.cs
Źródło:
XmlDocument.cs
Źródło:
XmlDocument.cs

Weryfikuje XmlDocument schematy języka XSD (XML Schema Definition Language) zawarte we Schemas właściwości .

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)

Parametry

validationEventHandler
ValidationEventHandler

ValidationEventHandler Obiekt, który otrzymuje informacje o ostrzeżeniach i błędach weryfikacji schematu.

Wyjątki

Wystąpiło zdarzenie sprawdzania poprawności schematu i nie ValidationEventHandler określono żadnego obiektu.

Przykłady

Poniższy przykład ilustruje użycie Validate metody . W przykładzie zostanie utworzony schemat XmlDocument , który zawiera skojarzony schemat XSD przy użyciu XmlReaderSettings obiektów i XmlReader . W tym przykładzie XPathNavigator użyto klasy , aby niepoprawnie zmodyfikować typową wartość elementu w dokumencie XML generującym błąd weryfikacji schematu.

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

Przykład przyjmuje contosoBooks.xml pliki i contosoBooks.xsd jako dane wejściowe.

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

Uwagi

Metoda Validate weryfikuje dane XML względem XmlDocument schematów zawartych we Schemas właściwości . Metoda Validate wykonuje rozszerzenie infoset. W szczególności po pomyślnej weryfikacji są stosowane wartości domyślne schematu, wartości tekstowe są konwertowane na wartości niepodzielne w razie potrzeby, a informacje o typie są skojarzone z zweryfikowanymi elementami informacji. Wynikiem jest wcześniej nietypowe drzewo podrzędne XML w XmlDocument zastąpionym typem pod drzewa podrzędnego.

Podczas korzystania z Validate metody należy wziąć pod uwagę następujące kwestie:

  • Wskazówki dotyczące lokalizacji schematu, takie jak xsi:schemaLocation lub xsi:noNamespaceSchemaLocation , są ignorowane.
  • Schematy wbudowane są ignorowane.
  • Jeśli podczas walidacji wystąpią błędy sprawdzania poprawności schematu, XmlDocument element zostanie częściowo zweryfikowany przy użyciu niektórych węzłów z poprawnymi informacjami o typie i niektórych bez.
  • Proces weryfikacji obejmuje sprawdzanie unikatowości i ograniczeń odwołań (xs:ID, xs:IDREF, , xs:keyrefxs:key, i xs:unique).

Dotyczy

Validate(ValidationEventHandler, XmlNode)

Źródło:
XmlDocument.cs
Źródło:
XmlDocument.cs
Źródło:
XmlDocument.cs
Źródło:
XmlDocument.cs
Źródło:
XmlDocument.cs

Sprawdza poprawność XmlNode obiektu określonego względem schematów języka XSD (XML Schema Definition Language) we Schemas właściwości .

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)

Parametry

validationEventHandler
ValidationEventHandler

ValidationEventHandler Obiekt, który otrzymuje informacje o ostrzeżeniach i błędach weryfikacji schematu.

nodeToValidate
XmlNode

Obiekt XmlNode utworzony na podstawie elementu XmlDocument do weryfikacji.

Wyjątki

Parametr XmlNode obiektu nie został utworzony na podstawie elementu XmlDocument.

Parametr XmlNode obiektu nie jest elementem, atrybutem, fragmentem dokumentu ani węzłem głównym.

Wystąpiło zdarzenie sprawdzania poprawności schematu i nie ValidationEventHandler określono żadnego obiektu.

Przykłady

Aby zapoznać się z przykładem Validate metody, zobacz metodę Validate .

Uwagi

Metoda Validate weryfikuje dane XML w XmlNode obiekcie względem schematów zawartych we Schemas właściwości . Metoda Validate wykonuje rozszerzenie infoset. W szczególności po pomyślnej weryfikacji są stosowane wartości domyślne schematu, wartości tekstowe są konwertowane na wartości niepodzielne w razie potrzeby, a informacje o typie są skojarzone z zweryfikowanymi elementami informacji. Wynikiem jest wcześniej nietypowe drzewo podrzędne XML w XmlDocument zastąpionym typem pod drzewa podrzędnego.

Poniżej przedstawiono ważne uwagi, które należy wziąć pod uwagę podczas korzystania z Validate metody .

  • Wskazówki dotyczące lokalizacji schematu, takie jak xsi:schemaLocation lub xsi:noNamespaceSchemaLocation , są ignorowane.

  • Schematy wbudowane są ignorowane.

  • Jeśli podczas walidacji wystąpią błędy sprawdzania poprawności schematu, XmlDocument element zostanie częściowo zweryfikowany przy użyciu niektórych węzłów z poprawnymi informacjami o typie i niektórych bez.

Jeśli węzeł do zweryfikowania jest węzłem głównym, proces weryfikacji obejmuje sprawdzanie unikatowości i ograniczeń odwołań (xs:ID, xs:IDREF, xs:key, xs:keyrefi xs:unique); w przeciwnym razie nie zostaną pominięte unikatowości i ograniczeń odwołań.

Dotyczy