Aracılığıyla paylaş


XmlDocument.Validate Yöntem

Tanım

XmlDocument özelliğinin içerdiği XML Şema Tanım Dili (XSD) şemalarına göre öğesini Schemas doğrular.

Aşırı Yüklemeler

Validate(ValidationEventHandler)

XmlDocument özelliğinin içerdiği XML Şema Tanım Dili (XSD) şemalarına göre öğesini Schemas doğrular.

Validate(ValidationEventHandler, XmlNode)

Özelliğindeki XmlNode XML Şema Tanım Dili (XSD) şemalarında belirtilen nesneyi doğrular Schemas .

Validate(ValidationEventHandler)

Kaynak:
XmlDocument.cs
Kaynak:
XmlDocument.cs
Kaynak:
XmlDocument.cs

XmlDocument özelliğinin içerdiği XML Şema Tanım Dili (XSD) şemalarına göre öğesini Schemas doğrular.

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)

Parametreler

validationEventHandler
ValidationEventHandler

Şema ValidationEventHandler doğrulama uyarıları ve hataları hakkında bilgi alan nesne.

Özel durumlar

Şema doğrulama olayı oluştu ve hiçbir ValidationEventHandler nesne belirtilmedi.

Örnekler

Aşağıdaki örnekte yönteminin kullanımı gösterilmektedir Validate . Örnek, ve XmlReader nesnelerini kullanarak XmlReaderSettings ilişkili bir XSD şeması içeren bir XmlDocument oluşturur. Daha sonra örnek, xml belgesinde bir öğenin yazılan değerini yanlış değiştirmek için sınıfını kullanarak XPathNavigator şema doğrulama hatası oluşturur.

#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

Örnek, giriş olarak ve contosoBooks.xsd dosyalarını alırcontosoBooks.xml.

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

Açıklamalar

yöntemi içindeki Validate XML verilerini XmlDocument özelliğinde Schemas bulunan şemalara göre doğrular. yöntemi infoset Validate büyütme gerçekleştirir. Özellikle, başarılı doğrulamadan sonra şema varsayılanları uygulanır, metin değerleri gerektiğinde atomik değerlere dönüştürülür ve tür bilgileri doğrulanmış bilgi öğeleriyle ilişkilendirilir. Sonuç, türü daha önce yazılmamış bir XML alt ağacının XmlDocument yerine yazılan bir alt ağaçtır.

Yöntemi kullanırken dikkate alınması gereken önemli notlar aşağıdadır Validate .

  • veya xsi:noNamespaceSchemaLocation gibi xsi:schemaLocation şema konumu ipuçları yoksayılır.

  • Satır içi şemalar yoksayılır.

  • Doğrulama sırasında şema doğrulama hataları oluşursa, XmlDocument doğru tür bilgilerine sahip bazı düğümlerle ve bazıları olmadan kısmen doğrulanır.

  • Doğrulama işlemi benzersizliği ve başvuru kısıtlamalarını (xs:ID, xs:IDREF, xs:key, xs:keyrefve xs:unique) denetlemeyi içerir.

Şunlara uygulanır

Validate(ValidationEventHandler, XmlNode)

Kaynak:
XmlDocument.cs
Kaynak:
XmlDocument.cs
Kaynak:
XmlDocument.cs

Özelliğindeki XmlNode XML Şema Tanım Dili (XSD) şemalarında belirtilen nesneyi doğrular Schemas .

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)

Parametreler

validationEventHandler
ValidationEventHandler

Şema ValidationEventHandler doğrulama uyarıları ve hataları hakkında bilgi alan nesne.

nodeToValidate
XmlNode

XmlNode Doğrulamak için öğesinden XmlDocument oluşturulan nesne.

Özel durumlar

XmlNode nesne parametresi bir XmlDocumentöğesinden oluşturulmadı.

XmlNode nesne parametresi bir öğe, öznitelik, belge parçası veya kök düğüm değildir.

Şema doğrulama olayı oluştu ve hiçbir ValidationEventHandler nesne belirtilmedi.

Örnekler

Yöntemin Validate bir örneği için yöntemine Validate bakın.

Açıklamalar

yöntemi nesnesindeki ValidateXmlNode XML verilerini özelliğinde bulunan Schemas şemalara göre doğrular. yöntemi infoset Validate büyütme gerçekleştirir. Özellikle, başarılı doğrulamadan sonra şema varsayılanları uygulanır, metin değerleri gerektiğinde atomik değerlere dönüştürülür ve tür bilgileri doğrulanmış bilgi öğeleriyle ilişkilendirilir. Sonuç, türü daha önce yazılmamış bir XML alt ağacının XmlDocument yerine yazılan bir alt ağaçtır.

Yöntemi kullanırken dikkate alınması gereken önemli notlar aşağıdadır Validate .

  • veya xsi:noNamespaceSchemaLocation gibi xsi:schemaLocation şema konumu ipuçları yoksayılır.

  • Satır içi şemalar yoksayılır.

  • Doğrulama sırasında şema doğrulama hataları oluşursa, XmlDocument doğru tür bilgilerine sahip bazı düğümlerle ve bazıları olmadan kısmen doğrulanır.

Doğrulanan düğüm kök düğümse, doğrulama işlemi benzersizlik ve başvuru kısıtlamalarının (xs:ID, xs:IDREF, xs:key, xs:keyrefve xs:unique) denetlenmesini içerir, aksi takdirde benzersizlik ve başvuru kısıtlamaları atlanır.

Şunlara uygulanır