XmlDocument.Validate Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
XmlDocument Sprawdza poprawność schematów języka XSD (XML Schema Definition Language) zawartych we Schemas właściwości .
Przeciążenia
Validate(ValidationEventHandler) |
XmlDocument Sprawdza poprawność schematów języka XSD (XML Schema Definition Language) zawartych we Schemas właściwości . |
Validate(ValidationEventHandler, XmlNode) |
Sprawdza poprawność XmlNode obiektu określonego względem schematów języka XSD (XML Schema Definition Language) we Schemas właściwości . |
Validate(ValidationEventHandler)
- Źródło:
- XmlDocument.cs
- Źródło:
- XmlDocument.cs
- Źródło:
- XmlDocument.cs
XmlDocument Sprawdza poprawność schematów języka XSD (XML Schema Definition Language) zawartych we Schemas właściwości .
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
ValidationEventHandler Obiekt, który odbiera informacje o ostrzeżeniach i błędach weryfikacji schematu.
Wyjątki
Wystąpiło zdarzenie weryfikacji schematu i nie określono żadnego ValidationEventHandler obiektu.
Przykłady
Poniższy przykład ilustruje użycie Validate metody . W przykładzie tworzony jest obiekt XmlDocument zawierający skojarzony schemat XSD przy użyciu XmlReaderSettings obiektów i XmlReader . W tym przykładzie XPathNavigator użyto klasy , aby niepoprawnie zmodyfikować typową wartość elementu w dokumencie XML generującym błąd weryfikacji schematu.
#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
Przykład przyjmuje contosoBooks.xml
pliki i contosoBooks.xsd
jako dane wejściowe.
<?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>
Uwagi
Metoda Validate weryfikuje dane XML w XmlDocument obiekcie względem schematów zawartych we Schemas właściwości . Metoda Validate wykonuje rozszerzanie zestawu informacji. W szczególności po pomyślnej weryfikacji są stosowane wartości domyślne schematu, wartości tekstowe są konwertowane na wartości niepodzielne w razie potrzeby, a informacje o typie są skojarzone z zweryfikowanymi elementami informacji. Wynikiem jest wcześniej nietypowe drzewo podrzędne XML w XmlDocument zastąpionym typem pod drzewa podrzędnego.
Poniżej przedstawiono ważne uwagi, które należy wziąć pod uwagę podczas korzystania z Validate metody .
Wskazówki dotyczące lokalizacji schematu, takie jak
xsi:schemaLocation
lubxsi:noNamespaceSchemaLocation
, są ignorowane.Schematy wbudowane są ignorowane.
Jeśli podczas walidacji wystąpią błędy weryfikacji schematu, XmlDocument element zostanie częściowo zweryfikowany przy użyciu niektórych węzłów z poprawnymi informacjami o typie i niektórych bez.
Proces weryfikacji obejmuje sprawdzanie unikatowości i ograniczeń odwołań (
xs:ID
,xs:IDREF
,xs:key
,xs:keyref
, ixs:unique
).
Dotyczy
Validate(ValidationEventHandler, XmlNode)
- Źródło:
- XmlDocument.cs
- Źródło:
- XmlDocument.cs
- Źródło:
- 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
ValidationEventHandler Obiekt, który odbiera informacje o ostrzeżeniach i błędach weryfikacji schematu.
- nodeToValidate
- XmlNode
Obiekt XmlNode utworzony na podstawie obiektu XmlDocument do weryfikacji.
Wyjątki
Parametr XmlNode obiektu nie został utworzony na podstawie obiektu XmlDocument.
Parametr XmlNode obiektu nie jest elementem, atrybutem, fragmentem dokumentu ani węzłem głównym.
Wystąpiło zdarzenie weryfikacji schematu i nie określono żadnego ValidationEventHandler obiektu.
Przykłady
Aby zapoznać się z przykładem Validate metody, zobacz metodę Validate .
Uwagi
Metoda Validate weryfikuje dane XML w XmlNode obiekcie względem schematów zawartych we Schemas właściwości . Metoda Validate wykonuje rozszerzanie zestawu informacji. W szczególności po pomyślnej weryfikacji są stosowane wartości domyślne schematu, wartości tekstowe są konwertowane na wartości niepodzielne w razie potrzeby, a informacje o typie są skojarzone z zweryfikowanymi elementami informacji. Wynikiem jest wcześniej nietypowe drzewo podrzędne XML w XmlDocument zastąpionym typem pod drzewa podrzędnego.
Poniżej przedstawiono ważne uwagi, które należy wziąć pod uwagę podczas korzystania z Validate metody .
Wskazówki dotyczące lokalizacji schematu, takie jak
xsi:schemaLocation
lubxsi:noNamespaceSchemaLocation
, są ignorowane.Schematy wbudowane są ignorowane.
Jeśli podczas walidacji wystąpią błędy weryfikacji schematu, XmlDocument element zostanie częściowo zweryfikowany przy użyciu niektórych węzłów z poprawnymi informacjami o typie i niektórych bez.
Jeśli węzeł do zweryfikowania jest węzłem głównym, proces weryfikacji obejmuje sprawdzanie unikatowości i ograniczeń odwołań (xs:ID
, xs:IDREF
, xs:key
, xs:keyref
i xs:unique
); w przeciwnym razie, unikatowość i ograniczenia odwołania zostaną pominięte.