Extensions 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
此类包含用于进行 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 是否与指定的 XmlSchemaObject 和 XmlSchemaSet 相符。 |
Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean) |
验证 XAttribute 是否与指定的 XmlSchemaObject 和 XmlSchemaSet 相符,并且可以选择使用架构验证后信息集 (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 子树是否与指定的 XmlSchemaObject 和 XmlSchemaSet 相符。 |
Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean) |
验证 XElement 子树是否与指定的 XmlSchemaObject 和 XmlSchemaSet 相符,并且可以选择使用架构验证后信息集 (PSVI) 填充 XML 树。 |