Extensions Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Этот класс содержит методы расширения LINQ to XML для проверки XSD.
public ref class Extensions abstract sealed
public static class Extensions
type Extensions = class
Public Module Extensions
- Наследование
-
Extensions
Примеры
XSD в примере XSD-файла: клиенты и заказы содержат схему, которая может использоваться для проверки XML-документа в примере XML-файла: клиенты и заказы. Следующий пример загружает схему и документ, проверяет документ, изменяет документ так, чтобы xs:keyxs:keyref связь была недопустимой, а затем пытается снова проверить.
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
В примере получается следующий вывод.
Validating custOrd
custOrd validated
Validating custOrd
The key sequence 'AAAAA' in Keyref fails to refer to some key.
custOrd did not validate
Комментарии
Этот класс также содержит методы для получения набора сведений о проверке после схемы (PSVI) проверенного XML-узла.
При проверке XDocumentили XElementXAttributeпри необходимости можно заполнить xml-дерево с помощью набора сведений после проверки схемы. Сведения PSVI добавляются в виде заметки типа System.Xml.Schema.XmlSchemaInfo.
Методы
| Имя | Описание |
|---|---|
| GetSchemaInfo(XAttribute) |
Возвращает набор сведений после проверки схемы (PSVI) проверенного атрибута. |
| GetSchemaInfo(XElement) |
Возвращает набор сведений после проверки схемы (PSVI) проверенного элемента. |
| Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean) |
Проверяет соответствие XAttribute заданному XmlSchemaObject и XmlSchemaSetнеобязательному заполнению XML-дерева набором сведений после проверки схемы (PSVI). |
| Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler) |
Этот метод проверяет соответствие XAttribute заданному и заданному XmlSchemaObjectXmlSchemaSet. |
| Validate(XDocument, XmlSchemaSet, ValidationEventHandler, Boolean) |
Проверяет, соответствует ли XDocument XSD в XmlSchemaSetxml-дереве при необходимости заполнение XML-дерева набором сведений после проверки схемы (PSVI). |
| Validate(XDocument, XmlSchemaSet, ValidationEventHandler) |
Этот метод проверяет соответствие XDocument XSD в объекте XmlSchemaSet. |
| Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean) |
Проверяет соответствие XElement вложенного дерева указанному XmlSchemaObject и XmlSchemaSetнеобязательному заполнению XML-дерева набором сведений после проверки схемы (PSVI). |
| Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler) |
Этот метод проверяет соответствие XElement вложенного дерева указанному и заданному XmlSchemaObjectXmlSchemaSet. |