Extensions Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Essa classe contém os métodos de extensão LINQ to XML para validação de XSD.
public ref class Extensions abstract sealed
public static class Extensions
type Extensions = class
Public Module Extensions
- Herança
-
Extensions
Exemplos
O XSD no arquivo XSD de exemplo: clientes e pedidos contêm um esquema que pode ser usado para validar o documento XML no arquivo XML de exemplo: clientes e pedidos. O exemplo a seguir carrega o esquema e o documento, valida o documento, altera o documento para que a relação e xs:keyref
a xs:key
relação não sejam válidas e tente 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
Esse exemplo gera a saída a seguir:
Validating custOrd
custOrd validated
Validating custOrd
The key sequence 'AAAAA' in Keyref fails to refer to some key.
custOrd did not validate
Comentários
Essa classe também contém métodos para obter o PSVI (conjunto de informações pós-validação de esquema) de um nó XML validado.
Ao validar um XDocument, XElementou XAttribute, você também pode preencher opcionalmente a árvore XML com o conjunto de informações pós-validação de esquema. As informações do PSVI são adicionadas como uma anotação do tipo System.Xml.Schema.XmlSchemaInfo.
Métodos
GetSchemaInfo(XAttribute) |
Obtém o PSVI (infoset de validação pós-esquema) de um atributo validado. |
GetSchemaInfo(XElement) |
Obtém o PSVI (post-schema-validation infoset) de um elemento validado. |
Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler) |
Esse método valida que um XAttribute está em conformidade com um XmlSchemaObject e um XmlSchemaSet especificados. |
Validate(XAttribute, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean) |
Valida se um XAttribute está em conformidade com um XmlSchemaObject e XmlSchemaSet especificados, opcionalmente, populando a árvore XML com o PSVI (infoset de validação pós-esquema). |
Validate(XDocument, XmlSchemaSet, ValidationEventHandler) |
Esse método valida se um XDocument está em conformidade com um XSD em um XmlSchemaSet. |
Validate(XDocument, XmlSchemaSet, ValidationEventHandler, Boolean) |
Valida que um XDocument está em conformidade com um XSD em um XmlSchemaSet, opcionalmente, preenchendo a árvore XML com o PSVI (post-schema-validation infoset). |
Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler) |
Esse método valida que uma subárvore XElement está em conformidade com um XmlSchemaObject e um XmlSchemaSet especificados. |
Validate(XElement, XmlSchemaObject, XmlSchemaSet, ValidationEventHandler, Boolean) |
Valida se uma subárvore XElement está em conformidade com um XmlSchemaObject e XmlSchemaSet especificados, opcionalmente, populando a árvore XML com o PSVI (infoset de validação pós-esquema). |