Extensions 类

定义

此类包含用于进行 XSD 验证的 LINQ to XML 扩展方法。

public ref class Extensions abstract sealed
public static class Extensions
type Extensions = class
Public Module Extensions
继承
Extensions

示例

示例 XSD 文件中的 XSD:客户和订单包含可用于在示例 XML 文件中验证 XML 文档的架构:客户和订单。 以下示例加载架构和文档、验证文档、更改文档, xs:key 使文档无效 xs: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  

注解

此类还包含获取验证后的 XML 节点的 PSVI 后验证信息集的方法 (PSVI) 。

验证 XML XDocumentXElement树时,XAttribute也可以选择使用架构验证后信息集填充 XML 树。 PSVI 信息作为类型的 System.Xml.Schema.XmlSchemaInfo注释添加。

方法

GetSchemaInfo(XAttribute)

获取已验证特性的架构验证后信息集 (PSVI)。

GetSchemaInfo(XElement)

获取已验证元素的架构验证后信息集 (PSVI)。

Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

此方法验证 XAttribute 是否与指定的 XmlSchemaObjectXmlSchemaSet 相符。

Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean)

验证 XAttribute 是否与指定的 XmlSchemaObjectXmlSchemaSet 相符,并且可以选择使用架构验证后信息集 (PSVI) 填充 XML 树。

Validate(XDocument, XmlSchemaSet, ValidationEventHandler)

此方法验证 XDocument 是否与 XmlSchemaSet 中的 XSD 相符。

Validate(XDocument, XmlSchemaSet, ValidationEventHandler, Boolean)

验证 XDocument 是否与 XmlSchemaSet 中的某个 XSD 相符,并且可以选择使用架构验证后信息集 (PSVI) 填充 XML 树。

Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler)

此方法验证 XElement 子树是否与指定的 XmlSchemaObjectXmlSchemaSet 相符。

Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean)

验证 XElement 子树是否与指定的 XmlSchemaObjectXmlSchemaSet 相符,并且可以选择使用架构验证后信息集 (PSVI) 填充 XML 树。

适用于