XmlDocument.Validate Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überprüft die XmlDocument Xml-Schemadefinitionssprache (XSD)-Schemas, die in der Schemas Eigenschaft enthalten sind.
Überlädt
| Name | Beschreibung |
|---|---|
| Validate(ValidationEventHandler) |
Überprüft die XmlDocument Xml-Schemadefinitionssprache (XSD)-Schemas, die in der Schemas Eigenschaft enthalten sind. |
| Validate(ValidationEventHandler, XmlNode) |
Überprüft das XmlNode in der Schemas Eigenschaft angegebene Objekt anhand der XSD-Schemaschemas (XML Schema Definition Language). |
Validate(ValidationEventHandler)
- Quelle:
- XmlDocument.cs
- Quelle:
- XmlDocument.cs
- Quelle:
- XmlDocument.cs
- Quelle:
- XmlDocument.cs
- Quelle:
- XmlDocument.cs
Überprüft die XmlDocument Xml-Schemadefinitionssprache (XSD)-Schemas, die in der Schemas Eigenschaft enthalten sind.
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)
Parameter
- validationEventHandler
- ValidationEventHandler
Das ValidationEventHandler Objekt, das Informationen zu Schemaüberprüfungswarnungen und Fehlern empfängt.
Ausnahmen
Ein Schemaüberprüfungsereignis ist aufgetreten, und es wurde kein ValidationEventHandler Objekt angegeben.
Beispiele
Das folgende Beispiel veranschaulicht die Verwendung der Validate Methode. Im Beispiel wird ein XmlDocument XSD-Schema erstellt, das ein zugeordnetes XSD-Schema mit den XmlReaderSettings Und-Objekten XmlReader enthält. Im Beispiel wird dann die XPathNavigator Klasse verwendet, um den typierten Wert eines Elements im XML-Dokument, das einen Schemaüberprüfungsfehler generiert, falsch zu ändern.
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
Im Beispiel werden die contosoBooks.xml Dateien als contosoBooks.xsd Eingabe verwendet.
<?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>
Hinweise
Die Validate Methode überprüft die XML-Daten im XmlDocument Vergleich zu den Schemas, die in der Schemas Eigenschaft enthalten sind. Die Validate Methode führt eine Infoseterweiterung durch. Nach erfolgreicher Überprüfung werden Schemastandardwerte angewendet, Textwerte werden nach Bedarf in atome Werte konvertiert, und Typinformationen werden überprüften Informationselementen zugeordnet. Das Ergebnis ist eine zuvor nicht typierte XML-Unterstruktur, die XmlDocument durch eine typierte Unterstruktur ersetzt wird.
Berücksichtigen Sie bei der Verwendung der Validate Methode die folgenden Punkte:
- Schemaspeicherorthinweise wie
xsi:schemaLocationoderxsi:noNamespaceSchemaLocationwerden ignoriert. - Inlineschemas werden ignoriert.
- Wenn während der Überprüfung Fehler bei der Schemaüberprüfung auftreten, wird dies XmlDocument teilweise mit einigen Knoten mit korrekten Typinformationen und einigen ohne überprüft.
- Der Überprüfungsprozess umfasst die Überprüfung auf Eindeutigkeit und Referenzeinschränkungen (
xs:ID,xs:IDREF, ,xs:keyxs:keyrefundxs:unique).
Gilt für:
Validate(ValidationEventHandler, XmlNode)
- Quelle:
- XmlDocument.cs
- Quelle:
- XmlDocument.cs
- Quelle:
- XmlDocument.cs
- Quelle:
- XmlDocument.cs
- Quelle:
- 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)
Parameter
- validationEventHandler
- ValidationEventHandler
Das ValidationEventHandler Objekt, das Informationen zu Schemaüberprüfungswarnungen und Fehlern empfängt.
- nodeToValidate
- XmlNode
Das XmlNode von einem XmlDocument zu überprüfende Objekt erstellte Objekt.
Ausnahmen
Der XmlNode Objektparameter wurde nicht aus einem XmlDocument.
Der XmlNode Objektparameter ist kein Element, Attribut, Dokumentfragment oder der Stammknoten.
Ein Schemaüberprüfungsereignis ist aufgetreten, und es wurde kein ValidationEventHandler Objekt angegeben.
Beispiele
Ein Beispiel für die Validate Methode finden Sie unter der Validate Methode.
Hinweise
Die Validate Methode überprüft die XML-Daten im XmlNode Objekt anhand der schemas, die in der Schemas Eigenschaft enthalten sind. Die Validate Methode führt eine Infoseterweiterung durch. Nach erfolgreicher Überprüfung werden Schemastandardwerte angewendet, Textwerte werden nach Bedarf in atome Werte konvertiert, und Typinformationen werden überprüften Informationselementen zugeordnet. Das Ergebnis ist eine zuvor nicht typierte XML-Unterstruktur, die XmlDocument durch eine typierte Unterstruktur ersetzt wird.
Im Folgenden finden Sie wichtige Hinweise, die Sie bei der Verwendung der Validate Methode berücksichtigen sollten.
Schemaspeicherorthinweise wie
xsi:schemaLocationoderxsi:noNamespaceSchemaLocationwerden ignoriert.Inlineschemas werden ignoriert.
Wenn während der Überprüfung Fehler bei der Schemaüberprüfung auftreten, wird dies XmlDocument teilweise mit einigen Knoten mit korrekten Typinformationen und einigen ohne überprüft.
Wenn der zu überprüfende Knoten der Stammknoten ist, umfasst der Überprüfungsprozess die Überprüfung auf Eindeutigkeits- und Verweiseinschränkungen (xs:ID, xs:IDREF, , xs:keyxs:keyrefund xs:unique); andernfalls werden Eindeutigkeits- und Verweiseinschränkungen weggelassen.