XmlDocument.Validate Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Validerar XmlDocument mot XSD-scheman (XML Schema Definition Language) som finns i egenskapen Schemas .
Överlagringar
| Name | Description |
|---|---|
| Validate(ValidationEventHandler) |
Validerar XmlDocument mot XSD-scheman (XML Schema Definition Language) som finns i egenskapen Schemas . |
| Validate(ValidationEventHandler, XmlNode) |
Verifierar objektet XmlNode som angetts mot XSD-scheman (XML Schema Definition Language) i Schemas egenskapen. |
Validate(ValidationEventHandler)
- Källa:
- XmlDocument.cs
- Källa:
- XmlDocument.cs
- Källa:
- XmlDocument.cs
- Källa:
- XmlDocument.cs
- Källa:
- XmlDocument.cs
Validerar XmlDocument mot XSD-scheman (XML Schema Definition Language) som finns i egenskapen 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)
Parametrar
- validationEventHandler
- ValidationEventHandler
Objektet ValidationEventHandler som tar emot information om schemavalideringsvarningar och -fel.
Undantag
En schemavalideringshändelse inträffade och inget ValidationEventHandler objekt angavs.
Exempel
I följande exempel visas hur metoden används Validate . Exemplet skapar ett XmlDocument som innehåller ett associerat XSD-schema med hjälp av objekten XmlReaderSettings och XmlReader . I exemplet används XPathNavigator sedan klassen för att felaktigt ändra det typinskrivna värdet för ett element i XML-dokumentet som genererar ett schemaverifieringsfel.
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
Exemplet tar contosoBooks.xml filerna och contosoBooks.xsd som indata.
<?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>
Kommentarer
Metoden Validate validerar XML-data i XmlDocument mot de scheman som finns i Schemas egenskapen. Metoden Validate utför infouppsättningsförstoring. Mer specifikt tillämpas schemastandarder efter validering, textvärden konverteras till atomiska värden efter behov och typinformation associeras med verifierade informationsobjekt. Resultatet är ett tidigare icke-skrivet XML-underträd i det XmlDocument ersatta med ett skrivet underträd.
Tänk på följande när du använder Validate metoden:
- Schemaplatstips som
xsi:schemaLocationellerxsi:noNamespaceSchemaLocationignoreras. - Infogade scheman ignoreras.
- Om schemavalideringsfel inträffar under valideringen XmlDocument verifieras delvis med vissa noder med rätt typinformation och vissa utan.
- Valideringsprocessen omfattar kontroll av unika begränsningar och referensbegränsningar (
xs:ID, ,xs:IDREFxs:key,xs:keyrefochxs:unique).
Gäller för
Validate(ValidationEventHandler, XmlNode)
- Källa:
- XmlDocument.cs
- Källa:
- XmlDocument.cs
- Källa:
- XmlDocument.cs
- Källa:
- XmlDocument.cs
- Källa:
- 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)
Parametrar
- validationEventHandler
- ValidationEventHandler
Objektet ValidationEventHandler som tar emot information om schemavalideringsvarningar och -fel.
- nodeToValidate
- XmlNode
Objektet XmlNode som skapats från en XmlDocument för att verifiera.
Undantag
Objektparametern XmlNode skapades inte från en XmlDocument.
Objektparametern XmlNode är inte ett element, attribut, dokumentfragment eller rotnoden.
En schemavalideringshändelse inträffade och inget ValidationEventHandler objekt angavs.
Exempel
Ett exempel på Validate metoden finns i Validate metoden.
Kommentarer
Metoden Validate validerar XML-data i XmlNode objektet mot scheman som finns i egenskapen Schemas . Metoden Validate utför infouppsättningsförstoring. Mer specifikt tillämpas schemastandarder efter validering, textvärden konverteras till atomiska värden efter behov och typinformation associeras med verifierade informationsobjekt. Resultatet är ett tidigare icke-skrivet XML-underträd i det XmlDocument ersatta med ett skrivet underträd.
Följande är viktiga att tänka på när du använder Validate metoden.
Schemaplatstips som
xsi:schemaLocationellerxsi:noNamespaceSchemaLocationignoreras.Infogade scheman ignoreras.
Om schemavalideringsfel inträffar under valideringen XmlDocument verifieras delvis med vissa noder med rätt typinformation och vissa utan.
Om noden som ska verifieras är rotnoden innehåller valideringsprocessen kontroll av unikhets- och referensbegränsningar (xs:ID, , xs:IDREFxs:key, xs:keyrefoch xs:unique); annars utelämnas unikhet och referensbegränsningar.