XmlDocument.Validate Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Ověří proti XmlDocument schématům XSD (XML Schema Definition Language) obsaženým Schemas ve vlastnosti.
Přetížení
| Name | Description |
|---|---|
| Validate(ValidationEventHandler) |
Ověří proti XmlDocument schématům XSD (XML Schema Definition Language) obsaženým Schemas ve vlastnosti. |
| Validate(ValidationEventHandler, XmlNode) |
XmlNode Ověří objekt zadaný ve schématu XSD (XML Schema Definition Language) ve Schemas vlastnosti. |
Validate(ValidationEventHandler)
- Zdroj:
- XmlDocument.cs
- Zdroj:
- XmlDocument.cs
- Zdroj:
- XmlDocument.cs
- Zdroj:
- XmlDocument.cs
- Zdroj:
- XmlDocument.cs
Ověří proti XmlDocument schématům XSD (XML Schema Definition Language) obsaženým Schemas ve vlastnosti.
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)
Parametry
- validationEventHandler
- ValidationEventHandler
Objekt ValidationEventHandler , který obdrží informace o upozorněních a chybách ověřování schématu.
Výjimky
Došlo k události ověření schématu a nebyl zadán žádný ValidationEventHandler objekt.
Příklady
Následující příklad ukazuje použití Validate metody. Příklad vytvoří XmlDocument , který obsahuje přidružené schéma XSD pomocí objektů XmlReaderSettings a XmlReader objektů. Příklad pak používá XPathNavigator třídu k nesprávné úpravě typové hodnoty prvku v dokumentu XML generující chybu ověření schématu.
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
Příklad přebírá contosoBooks.xml jako vstup soubory a contosoBooks.xsd soubory.
<?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>
Poznámky
Metoda Validate ověří data XML ve XmlDocument schématech obsažených ve Schemas vlastnosti. Metoda Validate provádí rozšíření informační sady. Konkrétně po úspěšném ověření se použijí výchozí hodnoty schématu, textové hodnoty se podle potřeby převedou na atomické hodnoty a informace o typu jsou přidružené k ověřeným položkám informací. Výsledkem je dříve netypovaný dílčí strom XML nahrazovaný XmlDocument zadaným dílčím stromem.
Při použití Validate metody zvažte následující body:
- Rady k umístění schématu, jako
xsi:schemaLocationjsou neboxsi:noNamespaceSchemaLocationjsou ignorovány. - Vložená schémata jsou ignorována.
- Pokud během ověřování dojde k chybám ověření schématu, XmlDocument stane se částečně ověřeno s některými uzly se správnými informacemi o typu a některými bez nich.
- Proces ověření zahrnuje kontrolu jedinečnosti a referenčních omezení (
xs:ID,xs:IDREF,xs:key,xs:keyrefaxs:unique).
Platí pro
Validate(ValidationEventHandler, XmlNode)
- Zdroj:
- XmlDocument.cs
- Zdroj:
- XmlDocument.cs
- Zdroj:
- XmlDocument.cs
- Zdroj:
- XmlDocument.cs
- Zdroj:
- 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)
Parametry
- validationEventHandler
- ValidationEventHandler
Objekt ValidationEventHandler , který obdrží informace o upozorněních a chybách ověřování schématu.
- nodeToValidate
- XmlNode
Objekt XmlNode vytvořený z objektu, který XmlDocument se má ověřit.
Výjimky
Parametr XmlNode objektu nebyl vytvořen z objektu XmlDocument.
Parametr XmlNode objektu není element, atribut, fragment dokumentu ani kořenový uzel.
Došlo k události ověření schématu a nebyl zadán žádný ValidationEventHandler objekt.
Příklady
Validate Příklad metody najdete v Validate metodě.
Poznámky
Metoda Validate ověřuje data XML v objektu XmlNode proti schématům obsaženým Schemas ve vlastnosti. Metoda Validate provádí rozšíření informační sady. Konkrétně po úspěšném ověření se použijí výchozí hodnoty schématu, textové hodnoty se podle potřeby převedou na atomické hodnoty a informace o typu jsou přidružené k ověřeným položkám informací. Výsledkem je dříve netypovaný dílčí strom XML nahrazovaný XmlDocument zadaným dílčím stromem.
Při použití Validate této metody je potřeba vzít v úvahu následující důležité poznámky.
Rady k umístění schématu, jako
xsi:schemaLocationjsou neboxsi:noNamespaceSchemaLocationjsou ignorovány.Vložená schémata jsou ignorována.
Pokud během ověřování dojde k chybám ověření schématu, XmlDocument stane se částečně ověřeno s některými uzly se správnými informacemi o typu a některými bez nich.
Pokud je uzel k ověření kořenovým uzlem, proces ověřování zahrnuje kontrolu jedinečnosti a omezení odkazů (xs:ID, xs:IDREF, xs:key, xs:keyrefa xs:unique); jinak se vynechá jedinečnost a referenční omezení.