Extensions Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Esta classe contém os métodos de extensão LINQ para XML para validação XSD.
public ref class Extensions abstract sealed
public static class Extensions
type Extensions = class
Public Module Extensions
- Herança
-
Extensions
Exemplos
O XSD no ficheiro XSD de exemplo: Clientes e encomendas contém um esquema que pode ser usado para validar o documento XML no ficheiro XML de exemplo: Clientes e encomendas. O exemplo seguinte carrega o esquema e o documento, valida o documento, altera o documento para que a xs:key relação e xs:keyref não seja válida e depois tenta validar novamente.
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
Este exemplo produz a seguinte saída:
Validating custOrd
custOrd validated
Validating custOrd
The key sequence 'AAAAA' in Keyref fails to refer to some key.
custOrd did not validate
Observações
Esta classe também contém métodos para obter o conjunto de infos pós-validação de esquema (PSVI) de um nó XML validado.
Quando valida um XDocument, XElement, ou XAttribute, pode, opcionalmente, preencher a árvore XML com o conjunto de infos pós-validação do esquema. A informação PSVI é adicionada como uma anotação do tipo System.Xml.Schema.XmlSchemaInfo.
Métodos
| Name | Description |
|---|---|
| GetSchemaInfo(XAttribute) |
Obtém o conjunto de infos pós-validação do esquema (PSVI) de um atributo validado. |
| GetSchemaInfo(XElement) |
Obtém o conjunto de infos pós-validação do esquema (PSVI) de um elemento validado. |
| Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean) |
Valida que um XAttribute conforma a um especificado XmlSchemaObject e um XmlSchemaSet, preenchendo opcionalmente a árvore XML com o conjunto de infos pós-validação do esquema (PSVI). |
| Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler) |
Este método valida que um XAttribute se conforma a um especificado XmlSchemaObject e a um XmlSchemaSet. |
| Validate(XDocument, XmlSchemaSet, ValidationEventHandler, Boolean) |
Valida que um XDocument conforma um XSD num XmlSchemaSet, preenchendo opcionalmente a árvore XML com o conjunto de infos pós-validação de esquema (PSVI). |
| Validate(XDocument, XmlSchemaSet, ValidationEventHandler) |
Este método valida que um XDocument se conforma a um XSD num XmlSchemaSet. |
| Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean) |
Valida que uma XElement subárvore cumpre um especificado XmlSchemaObject e um XmlSchemaSet, preenchendo opcionalmente a árvore XML com o conjunto de infos pós-validação de esquema (PSVI). |
| Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler) |
Este método valida que uma XElement subárvore se conforma a um especificado XmlSchemaObject e a um XmlSchemaSet. |