XmlDocument.Validate Метод

Определение

Проверяет XmlDocument по схемам языка XSD, содержащимся в свойстве Schemas.Validates the XmlDocument against the XML Schema Definition Language (XSD) schemas contained in the Schemas property.

Перегрузки

Validate(ValidationEventHandler)

Проверяет XmlDocument по схемам языка XSD, содержащимся в свойстве Schemas.Validates the XmlDocument against the XML Schema Definition Language (XSD) schemas contained in the Schemas property.

Validate(ValidationEventHandler, XmlNode)

Проверяет указанный объект XmlNode по схемам языка XSD, содержащимся в свойстве Schemas.Validates the XmlNode object specified against the XML Schema Definition Language (XSD) schemas in the Schemas property.

Validate(ValidationEventHandler)

Проверяет XmlDocument по схемам языка XSD, содержащимся в свойстве Schemas.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

Параметры

validationEventHandler
ValidationEventHandler

Объект ValidationEventHandler, который получает сведения о предупреждениях и ошибках, возникающих при проверке схемы.The ValidationEventHandler object that receives information about schema validation warnings and errors.

Исключения

Произошло событие проверки схемы, и не указан ни один объект ValidationEventHandler.A schema validation event occurred and no ValidationEventHandler object was specified.

Примеры

В следующем примере показано использование метода Validate.The following example illustrates use of the Validate method. В примере создается объект XmlDocument , содержащий связанную схему XSD XmlReaderSettings с помощью объектов XmlReader и.The example creates an XmlDocument that contains an associated XSD schema using the XmlReaderSettings and XmlReader objects. В примере используется XPathNavigator класс для неправильного изменения типизированного значения элемента в XML-документе, создающего ошибку проверки схемы.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

В примере в contosoBooks.xml качестве входных данных используются файлы и contosoBooks.xsd .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>

Комментарии

Метод проверяет XML-данные в, XmlDocument применительно к Schemas схемам, содержащимся в свойстве. ValidateThe Validate method validates the XML data in the XmlDocument against the schemas contained in the Schemas property. Validate Метод выполняет приращение набора сведений.The Validate method performs infoset augmentation. В частности, после успешной проверки применяются схемы по умолчанию, текстовые значения преобразуются в атомарные, а сведения о типах связываются с проверенными элементами информации.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. Результатом является ранее нетипизированное поддерево XML в XmlDocument заменено на типизированное поддерево.The result is a previously un-typed XML sub-tree in the XmlDocument replaced with a typed sub-tree.

Ниже приведены важные замечания, которые следует учитывать при использовании Validate метода.The following are important notes to consider when using the Validate method.

  • Указания расположения схемы, xsi:schemaLocation такие xsi:noNamespaceSchemaLocation как или, игнорируются.Schema location hints like xsi:schemaLocation or xsi:noNamespaceSchemaLocation are ignored.

  • Встроенные схемы игнорируются.Inline schemas are ignored.

  • Если во время проверки происходит ошибка проверки схемы XmlDocument , она частично проверяется с помощью некоторых узлов с правильными сведениями о типе, а некоторые — без.If schema validation errors occur during validation the XmlDocument becomes partially validated with some nodes with correct type information and some without.

  • Процесс проверки включает проверку уникальности и ссылочных ограничений (xs:ID xs:key, xs:IDREF xs:keyref,, и xs:unique).The validation process includes checking for uniqueness and reference constraints (xs:ID, xs:IDREF, xs:key, xs:keyref, and xs:unique).

Validate(ValidationEventHandler, XmlNode)

Проверяет указанный объект XmlNode по схемам языка XSD, содержащимся в свойстве Schemas.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

Параметры

validationEventHandler
ValidationEventHandler

Объект ValidationEventHandler, который получает сведения о предупреждениях и ошибках, возникающих при проверке схемы.The ValidationEventHandler object that receives information about schema validation warnings and errors.

nodeToValidate
XmlNode

Объект XmlNode, созданный из XmlDocument в целях проверки.The XmlNode object created from an XmlDocument to validate.

Исключения

Параметр объекта XmlNode не был создан из XmlDocument.The XmlNode object parameter was not created from an XmlDocument.

Параметр объекта XmlNode не является элементом, атрибутом, фрагментом документа или корневым узлом.The XmlNode object parameter is not an element, attribute, document fragment, or the root node.

Произошло событие проверки схемы, и не указан ни один объект ValidationEventHandler.A schema validation event occurred and no ValidationEventHandler object was specified.

Примеры

Пример Validate метода см. в Validate описании метода.For an example of the Validate method, see the Validate method.

Комментарии

Метод проверяет XML-данные XmlNode в объекте на соответствие Schemas схемам, содержащимся в свойстве. ValidateThe Validate method validates the XML data in the XmlNode object against the schemas contained in the Schemas property. Validate Метод выполняет приращение набора сведений.The Validate method performs infoset augmentation. В частности, после успешной проверки применяются схемы по умолчанию, текстовые значения преобразуются в атомарные, а сведения о типах связываются с проверенными элементами информации.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. Результатом является ранее нетипизированное поддерево XML в XmlDocument заменено на типизированное поддерево.The result is a previously un-typed XML sub-tree in the XmlDocument replaced with a typed sub-tree.

Ниже приведены важные замечания, которые следует учитывать при использовании Validate метода.The following are important notes to consider when using the Validate method.

  • Указания расположения схемы, xsi:schemaLocation такие xsi:noNamespaceSchemaLocation как или, игнорируются.Schema location hints like xsi:schemaLocation or xsi:noNamespaceSchemaLocation are ignored.

  • Встроенные схемы игнорируются.Inline schemas are ignored.

  • Если во время проверки происходит ошибка проверки схемы XmlDocument , она частично проверяется с помощью некоторых узлов с правильными сведениями о типе, а некоторые — без.If schema validation errors occur during validation the XmlDocument becomes partially validated with some nodes with correct type information and some without.

Если проверяемый узел является корневым узлом, процесс проверки включает проверку уникальности и ссылочных ограничений (xs:ID xs:key, xs:IDREF,, xs:keyrefи xs:unique); в противном случае — уникальность и ссылка. ограничения опущены.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.

Применяется к