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 für die XSD-Überprüfung.
public ref class Extensions abstract sealed
public static class Extensions
type Extensions = class
Public Module Extensions
- Vererbung
-
Extensions
Beispiele
Die XSD-Datei in der XSD-Beispieldatei: Kunden und Bestellungen enthalten ein Schema, mit dem das XML-Dokument in der XML-Beispieldatei überprüft werden kann: Kunden und Bestellungen. Im folgenden Beispiel wird das Schema und das Dokument geladen, das Dokument überprüft, das Dokument so geändert, dass die xs:key Beziehung xs:keyref ungültig ist, und dann erneut versucht, die Überprüfung 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 Infosets nach schemaschemas (PSVI) eines überprüften XML-Knotens.
Wenn Sie eine XDocumentXml-Struktur XElementüberprüfen oder XAttributeoptional mit dem Infoset für die Nachschemaüberprüfung füllen können. PSVI-Informationen werden als Anmerkung des Typs System.Xml.Schema.XmlSchemaInfohinzugefügt.
Methoden
| Name | Beschreibung |
|---|---|
| GetSchemaInfo(XAttribute) |
Ruft das Infoset nach der Schemaüberprüfung (PSVI) eines überprüften Attributs ab. |
| GetSchemaInfo(XElement) |
Ruft das Infoset nach der Schemaüberprüfung (PSVI) eines überprüften Elements ab. |
| Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean) |
Überprüft, ob eine XAttribute übereinstimmung mit einem angegebenen XmlSchemaObject und einem XmlSchemaSetoptionalen Auffüllen der XML-Struktur mit dem Post-Schema-Validation-Infoset (PSVI) übereinstimmt. |
| Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler) |
Diese Methode überprüft, ob eine XAttribute Übereinstimmung mit einem angegebenen XmlSchemaObject und einem XmlSchemaSet. |
| Validate(XDocument, XmlSchemaSet, ValidationEventHandler, Boolean) |
Überprüft, ob ein XDocument XSD-Wert in einer XmlSchemaSetXML-Struktur entspricht, die optional die XML-Struktur mit dem Post-Schema-Validation-Infoset (PSVI) auffüllt. |
| Validate(XDocument, XmlSchemaSet, ValidationEventHandler) |
Diese Methode überprüft, ob eine XDocument XSD in einer XmlSchemaSet. |
| Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean) |
Überprüft, ob eine XElement Unterstruktur einem angegebenen XmlSchemaObject und optionalen XmlSchemaSetAuffüllen der XML-Struktur mit dem Post-Schema-Validation-Infoset (PSVI) entspricht. |
| Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler) |
Diese Methode überprüft, ob eine XElement Unterstruktur einem angegebenen XmlSchemaObject und einem XmlSchemaSet. |