Extensions Klasse
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.
Diese Klasse enthält die LINQ to XML-Erweiterungsmethoden zur XSD-Validierung.
public ref class Extensions abstract sealed
public static class Extensions
type Extensions = class
Public Module Extensions
- Vererbung
-
Extensions
Beispiele
Die XSD in XSD-Beispieldatei: Kunden und Bestellungen enthält ein Schema, das zum Überprüfen des XML-Dokuments in der XML-Beispieldatei "Kunden und Bestellungen" verwendet werden kann. Im folgenden Beispiel wird das Schema und das Dokument geladen, das Dokument überprüft, das Dokument so geändert, dass die xs:key
Beziehung und xs:keyref
ungültig ist, und dann versucht, die Überprüfung erneut durchzuführen.
XmlSchemaSet schemas = new XmlSchemaSet();
schemas.Add("", "CustomersOrders.xsd");
XDocument custOrd = XDocument.Load("CustomersOrders.xml");
Console.WriteLine("Validating custOrd");
bool errors = false;
custOrd.Validate(schemas, (o, e) =>
{
Console.WriteLine("{0}", e.Message);
errors = true;
});
Console.WriteLine("custOrd {0}", errors ? "did not validate" : "validated");
// Modify the custOrd tree so that it is no longer valid.
custOrd.Root.Element("Orders").Element("Order").Element("CustomerID").Value = "AAAAA";
Console.WriteLine();
Console.WriteLine("Validating custOrd");
errors = false;
custOrd.Validate(schemas, (o, e) =>
{
Console.WriteLine("{0}", e.Message);
errors = true;
});
Console.WriteLine("custOrd {0}", errors ? "did not validate" : "validated");
Dim errors As Boolean = False
Private Sub XSDErrors(ByVal o As Object, ByVal e As ValidationEventArgs)
Console.WriteLine("{0}", e.Message)
errors = True
End Sub
Sub Main()
Dim schemas As XmlSchemaSet = New XmlSchemaSet()
schemas.Add("", "CustomersOrders.xsd")
Console.WriteLine("Validating custOrd")
Dim custOrd As XDocument = XDocument.Load("CustomersOrders.xml")
errors = False
custOrd.Validate(schemas, AddressOf XSDErrors)
Console.WriteLine("custOrd {0}", IIf(errors, "did not validate", "validated"))
Console.WriteLine()
Console.WriteLine("Validating custOrd")
' Modify the source document so that it will not validate.
custOrd.Root.Element("Orders").Element("Order").Element("CustomerID").Value = "AAAAA"
errors = False
custOrd.Validate(schemas, AddressOf XSDErrors)
Console.WriteLine("custOrd {0}", IIf(errors, "did not validate", "validated"))
End Sub
Dieses Beispiel erzeugt die folgende Ausgabe:
Validating custOrd
custOrd validated
Validating custOrd
The key sequence 'AAAAA' in Keyref fails to refer to some key.
custOrd did not validate
Hinweise
Diese Klasse enthält auch Methoden zum Abrufen des Post-Schema-Validation Infosets (PSVI) eines überprüften XML-Knotens.
Wenn Sie ein XDocument, XElementoder XAttributeüberprüfen, können Sie optional auch die XML-Struktur mit dem Infoset nach der Schemavalidierung auffüllen. PSVI-Informationen werden als Anmerkung vom Typ System.Xml.Schema.XmlSchemaInfohinzugefügt.
Methoden
GetSchemaInfo(XAttribute) |
Ruft das Post-Schema-Validation-Infoset (PSVI) eines validierten Attributs ab. |
GetSchemaInfo(XElement) |
Ruft das Post-Schema-Validation-Infoset (PSVI) eines validierten Elements ab. |
Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler) |
Diese Methode validiert, ob ein XAttribute einem angegebenen XmlSchemaObject und einem XmlSchemaSet entspricht. |
Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean) |
Validiert, ob ein XAttribute einem angegebenen XmlSchemaObject und einem XmlSchemaSet entspricht, und füllt die XML-Struktur optional mit dem Post-Schema-Validation-Infoset (PSVI) auf. |
Validate(XDocument, XmlSchemaSet, ValidationEventHandler) |
Diese Methode validiert, ob ein XDocument einer XSD in einem XmlSchemaSet entspricht. |
Validate(XDocument, XmlSchemaSet, ValidationEventHandler, Boolean) |
Validiert, ob ein XDocument einer XSD in einem XmlSchemaSet entspricht, und füllt die XML-Struktur optional mit dem Post-Schema-Validation-Infoset (PSVI) auf. |
Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler) |
Diese Methode validiert, ob eine XElement-Teilstruktur einem angegebenen XmlSchemaObject und einem XmlSchemaSet entspricht. |
Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean) |
Validiert, ob eine XElement-Teilstruktur einem angegebenen XmlSchemaObject und einem XmlSchemaSet entspricht, und füllt die XML-Struktur optional mit dem Post-Schema-Validation-Infoset (PSVI) auf. |