XmlDocument.Validate Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
XmlDocument Проверяет соответствие схемам языка определения схемы XML (XSD), содержащихся в свойствеSchemas.
Перегрузки
| Имя | Описание |
|---|---|
| Validate(ValidationEventHandler) |
XmlDocument Проверяет соответствие схемам языка определения схемы XML (XSD), содержащихся в свойствеSchemas. |
| Validate(ValidationEventHandler, XmlNode) |
Проверяет объект, указанный XmlNode в схемах языка определения XML-схемы (XSD) в свойстве Schemas . |
Validate(ValidationEventHandler)
- Исходный код:
- XmlDocument.cs
- Исходный код:
- XmlDocument.cs
- Исходный код:
- XmlDocument.cs
- Исходный код:
- XmlDocument.cs
- Исходный код:
- XmlDocument.cs
XmlDocument Проверяет соответствие схемам языка определения схемы XML (XSD), содержащихся в свойствеSchemas.
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)
Параметры
- validationEventHandler
- ValidationEventHandler
Объект ValidationEventHandler , получающий сведения о предупреждениях и ошибках проверки схемы.
Исключения
Произошло событие проверки схемы, и объект не ValidationEventHandler указан.
Примеры
В следующем примере показано использование Validate метода. В примере создается XmlDocument схема XSD, содержащая связанную схему XSD с помощью XmlReaderSettings объектов и XmlReader объектов. Затем в примере XPathNavigator используется класс для неправильного изменения типизированного значения элемента в XML-документе, создающего ошибку проверки схемы.
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 файлы в качестве входных данных.
<?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>
Комментарии
Метод Validate проверяет XML-данные в схемах, содержащихся в XmlDocument свойстве Schemas . Метод Validate выполняет расширение набора сведений. В частности, после успешной проверки применяются значения схемы, текстовые значения преобразуются в атомарные значения при необходимости, а сведения о типе связаны с проверенными элементами информации. Результатом является ранее нетипизированное вложенное дерево XML в XmlDocument замененном типизированным вложенным деревом.
При использовании Validate метода следует учитывать следующие моменты:
- Указания по расположению схемы, такие как
xsi:schemaLocationилиxsi:noNamespaceSchemaLocationигнорируются. - Встроенные схемы игнорируются.
- Если ошибки проверки схемы возникают во время проверки, XmlDocument она частично проверяется с некоторыми узлами с правильными сведениями о типе и некоторыми без нее.
- Процесс проверки включает проверку уникальности и ограничений ссылок (
xs:ID, ,xs:IDREF,xs:keyxs:keyrefиxs:unique).
Применяется к
Validate(ValidationEventHandler, XmlNode)
- Исходный код:
- XmlDocument.cs
- Исходный код:
- XmlDocument.cs
- Исходный код:
- XmlDocument.cs
- Исходный код:
- XmlDocument.cs
- Исходный код:
- XmlDocument.cs
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)
Параметры
- 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:keyrefxs:keyи xs:unique); в противном случае ограничения уникальности и ссылок опущены.