Прочитать на английском

Поделиться через


XmlDocument.Validate Метод

Определение

Проверяет XmlDocument по схемам языка XSD, содержащимся в свойстве Schemas.

Перегрузки

Validate(ValidationEventHandler)

Проверяет XmlDocument по схемам языка XSD, содержащимся в свойстве Schemas.

Validate(ValidationEventHandler, XmlNode)

Проверяет указанный объект XmlNode по схемам языка XSD, содержащимся в свойстве Schemas.

Validate(ValidationEventHandler)

Исходный код:
XmlDocument.cs
Исходный код:
XmlDocument.cs
Исходный код:
XmlDocument.cs

Проверяет XmlDocument по схемам языка XSD, содержащимся в свойстве Schemas.

C#
public void Validate (System.Xml.Schema.ValidationEventHandler? validationEventHandler);
C#
public void Validate (System.Xml.Schema.ValidationEventHandler validationEventHandler);

Параметры

validationEventHandler
ValidationEventHandler

Объект ValidationEventHandler, который получает сведения о предупреждениях и ошибках, возникающих при проверке схемы.

Исключения

Произошло событие проверки схемы, и не указан ни один объект ValidationEventHandler.

Примеры

В следующем примере показано использование метода Validate. В примере создается XmlDocument объект , содержащий связанную схему XSD с помощью XmlReaderSettings объектов и XmlReader . Затем в примере используется XPathNavigator класс для неправильного изменения типизированного значения элемента в XML-документе, что создает ошибку проверки схемы.

C#
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;
        }
    }
}

В этом примере в качестве входных данных в качестве входных данных принимается contosoBooks.xml файлы и contosoBooks.xsd .

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

Комментарии

Метод Validate проверяет XML-данные в по XmlDocument схемам, содержащимся в свойстве Schemas . Метод Validate выполняет расширение набора сведений. В частности, после успешной проверки применяются значения по умолчанию схемы, текстовые значения при необходимости преобразуются в атомарные значения, а сведения о типе связываются с проверенными информационными элементами. Результатом является ранее нетипизированное вложенное дерево XML в XmlDocument замененном типизированным вложенным деревом.

Ниже приведены важные примечания, которые следует учитывать при использовании Validate метода .

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

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

  • Если во время проверки возникают ошибки при проверке XmlDocument схемы, выполняется частичное подтверждение с помощью некоторых узлов с правильными сведениями о типе, а для некоторых — без.

  • Процесс проверки включает проверку уникальности и ограничений ссылок (xs:ID, , xs:IDREFxs:key, xs:keyrefи xs:unique).

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

.NET 9 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Validate(ValidationEventHandler, XmlNode)

Исходный код:
XmlDocument.cs
Исходный код:
XmlDocument.cs
Исходный код:
XmlDocument.cs

Проверяет указанный объект XmlNode по схемам языка XSD, содержащимся в свойстве Schemas.

C#
public void Validate (System.Xml.Schema.ValidationEventHandler? validationEventHandler, System.Xml.XmlNode nodeToValidate);
C#
public void Validate (System.Xml.Schema.ValidationEventHandler validationEventHandler, System.Xml.XmlNode nodeToValidate);

Параметры

validationEventHandler
ValidationEventHandler

Объект ValidationEventHandler, который получает сведения о предупреждениях и ошибках, возникающих при проверке схемы.

nodeToValidate
XmlNode

Объект XmlNode, созданный из XmlDocument в целях проверки.

Исключения

Параметр объекта XmlNode не был создан из XmlDocument.

Параметр объекта XmlNode не является элементом, атрибутом, фрагментом документа или корневым узлом.

Произошло событие проверки схемы, и не указан ни один объект ValidationEventHandler.

Примеры

Пример метода см. в Validate описании Validate метода .

Комментарии

Метод Validate проверяет XML-данные в объекте XmlNode по схемам, содержащимся в свойстве Schemas . Метод Validate выполняет расширение набора сведений. В частности, после успешной проверки применяются значения по умолчанию схемы, текстовые значения при необходимости преобразуются в атомарные значения, а сведения о типе связываются с проверенными информационными элементами. Результатом является ранее нетипизированное вложенное дерево XML в XmlDocument замененном типизированным вложенным деревом.

Ниже приведены важные примечания, которые следует учитывать при использовании Validate метода .

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

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

  • Если во время проверки возникают ошибки при проверке XmlDocument схемы, выполняется частичное подтверждение с помощью некоторых узлов с правильными сведениями о типе, а для некоторых — без.

Если проверяемой является корневым узлом, процесс проверки включает проверку на уникальность и ограничения ссылок (xs:ID, xs:IDREF, xs:key, xs:keyrefи xs:unique); в противном случае ограничения уникальности и ссылок опущены.

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

.NET 9 и другие версии
Продукт Версии
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1