Bagikan melalui


XmlDocument.Validate Metode

Definisi

Memvalidasi XmlDocument terhadap skema XML Schema Definition Language (XSD) yang terkandung dalam Schemas properti .

Overload

Nama Deskripsi
Validate(ValidationEventHandler)

Memvalidasi XmlDocument terhadap skema XML Schema Definition Language (XSD) yang terkandung dalam Schemas properti .

Validate(ValidationEventHandler, XmlNode)

Memvalidasi XmlNode objek yang ditentukan terhadap skema XML Schema Definition Language (XSD) dalam Schemas properti .

Validate(ValidationEventHandler)

Sumber:
XmlDocument.cs
Sumber:
XmlDocument.cs
Sumber:
XmlDocument.cs
Sumber:
XmlDocument.cs
Sumber:
XmlDocument.cs

Memvalidasi XmlDocument terhadap skema XML Schema Definition Language (XSD) yang terkandung dalam Schemas properti .

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)

Parameter

validationEventHandler
ValidationEventHandler

Objek ValidationEventHandler yang menerima informasi tentang peringatan dan kesalahan validasi skema.

Pengecualian

Terjadi peristiwa validasi skema dan tidak ada ValidationEventHandler objek yang ditentukan.

Contoh

Contoh berikut mengilustrasikan penggunaan Validate metode . Contoh membuat XmlDocument yang berisi skema XSD terkait menggunakan XmlReaderSettings objek dan XmlReader . Contoh kemudian menggunakan XPathNavigator kelas untuk salah memodifikasi nilai elemen yang diketik dalam dokumen XML yang menghasilkan kesalahan validasi skema.

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

Contoh mengambil contosoBooks.xml file dan contosoBooks.xsd sebagai 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>

Keterangan

Metode Validate memvalidasi data XML dalam XmlDocument terhadap skema yang terkandung dalam Schemas properti . Metode ini Validate melakukan augmentasi infoset. Secara khusus, setelah validasi berhasil, default skema diterapkan, nilai teks dikonversi ke nilai atom seperlunya, dan informasi jenis dikaitkan dengan item informasi yang divalidasi. Hasilnya adalah sub-pohon XML yang sebelumnya tidak di ketik di XmlDocument ganti dengan sub-pohon yang ditik.

Pertimbangkan poin-poin berikut saat menggunakan Validate metode :

  • Petunjuk lokasi skema seperti xsi:schemaLocation atau xsi:noNamespaceSchemaLocation diabaikan.
  • Skema sebaris diabaikan.
  • Jika kesalahan validasi skema terjadi selama validasi, XmlDocument sebagian divalidasi dengan beberapa node dengan informasi jenis yang benar dan beberapa tanpa.
  • Proses validasi termasuk memeriksa keunikan dan batasan referensi (xs:ID, , xs:IDREF, xs:keyxs:keyref, dan xs:unique).

Berlaku untuk

Validate(ValidationEventHandler, XmlNode)

Sumber:
XmlDocument.cs
Sumber:
XmlDocument.cs
Sumber:
XmlDocument.cs
Sumber:
XmlDocument.cs
Sumber:
XmlDocument.cs

Memvalidasi XmlNode objek yang ditentukan terhadap skema XML Schema Definition Language (XSD) dalam Schemas properti .

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)

Parameter

validationEventHandler
ValidationEventHandler

Objek ValidationEventHandler yang menerima informasi tentang peringatan dan kesalahan validasi skema.

nodeToValidate
XmlNode

Objek XmlNode yang dibuat dari untuk memvalidasi XmlDocument .

Pengecualian

Parameter XmlNode objek tidak dibuat dari XmlDocument.

Parameter XmlNode objek bukan elemen, atribut, fragmen dokumen, atau simpul akar.

Terjadi peristiwa validasi skema dan tidak ada ValidationEventHandler objek yang ditentukan.

Contoh

Untuk contoh Validate metode , lihat Validate metode .

Keterangan

Metode Validate memvalidasi data XML dalam XmlNode objek terhadap skema yang terkandung dalam Schemas properti . Metode ini Validate melakukan augmentasi infoset. Secara khusus, setelah validasi berhasil, default skema diterapkan, nilai teks dikonversi ke nilai atom seperlunya, dan informasi jenis dikaitkan dengan item informasi yang divalidasi. Hasilnya adalah sub-pohon XML yang sebelumnya tidak di ketik di XmlDocument ganti dengan sub-pohon yang ditik.

Berikut ini adalah catatan penting yang perlu dipertimbangkan Validate saat menggunakan metode .

  • Petunjuk lokasi skema seperti xsi:schemaLocation atau xsi:noNamespaceSchemaLocation diabaikan.

  • Skema sebaris diabaikan.

  • Jika kesalahan validasi skema terjadi selama validasi, XmlDocument sebagian divalidasi dengan beberapa node dengan informasi jenis yang benar dan beberapa tanpa.

Jika simpul yang akan divalidasi adalah simpul akar, proses validasi termasuk memeriksa keunikan dan batasan referensi (xs:ID, , xs:IDREF, xs:keyxs:keyref, dan xs:unique); jika tidak, keunikan dan batasan referensi dihilangkan.

Berlaku untuk