XmlReaderSettings.ValidationFlags Propriedade

Definição

Obtém ou define um valor que indica as configurações de validação de esquema.Gets or sets a value indicating the schema validation settings. Essa configuração aplica-se a objetos XmlReader que validam esquemas (a propriedade ValidationType definida como ValidationType.Schema).This setting applies to XmlReader objects that validate schemas (ValidationType property set to ValidationType.Schema).

public:
 property System::Xml::Schema::XmlSchemaValidationFlags ValidationFlags { System::Xml::Schema::XmlSchemaValidationFlags get(); void set(System::Xml::Schema::XmlSchemaValidationFlags value); };
public System.Xml.Schema.XmlSchemaValidationFlags ValidationFlags { get; set; }
member this.ValidationFlags : System.Xml.Schema.XmlSchemaValidationFlags with get, set
Public Property ValidationFlags As XmlSchemaValidationFlags

Valor da propriedade

XmlSchemaValidationFlags

Uma combinação bit a bit dos valores de enumeração que especifica as opções de validação.A bitwise combination of enumeration values that specify validation options. ProcessIdentityConstraints e AllowXmlAttributes são habilitados por padrão.ProcessIdentityConstraints and AllowXmlAttributes are enabled by default. ProcessInlineSchema, ProcessSchemaLocation e ReportValidationWarnings são desabilitados por padrão.ProcessInlineSchema, ProcessSchemaLocation, and ReportValidationWarnings are disabled by default.

Exemplos

O exemplo a seguir valida um arquivo XML em um esquema XML embutido habilitando a ProcessInlineSchema configuração.The following example validates an XML file against an inline XML Schema by enabling the ProcessInlineSchema setting. O leitor de XML está configurado para exibir avisos de validação, SP você também vê o aviso esperado no elemento raiz.The XML reader is configured to display validation warnings, sp you also see the expected warning on the root element.

using System;
using System.Xml;
using System.Xml.Schema;
using System.IO;

public class ValidXSD {

  public static void Main() {

    // Set the validation settings.
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.ValidationType = ValidationType.Schema;
    settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
    settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
    settings.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);

    // Create the XmlReader object.
    XmlReader reader = XmlReader.Create("inlineSchema.xml", settings);

    // Parse the file.
    while (reader.Read());
  }

  // Display any warnings or errors.
  private static void ValidationCallBack (object sender, ValidationEventArgs args) {
     if (args.Severity==XmlSeverityType.Warning)
       Console.WriteLine("\tWarning: Matching schema not found.  No validation occurred." + args.Message);
     else
        Console.WriteLine("\tValidation error: " + args.Message);
  }
}
Imports System.Xml
Imports System.Xml.Schema
Imports System.IO

public class ValidXSD 

  public shared sub Main() 

    ' Set the validation settings.
    Dim settings as XmlReaderSettings = new XmlReaderSettings()
    settings.ValidationType = ValidationType.Schema
    settings.ValidationFlags = settings.ValidationFlags Or XmlSchemaValidationFlags.ProcessInlineSchema
    settings.ValidationFlags = settings.ValidationFlags Or XmlSchemaValidationFlags.ReportValidationWarnings
      AddHandler settings.ValidationEventHandler, AddressOf ValidationCallBack

    ' Create the XmlReader object.
    Dim reader as XmlReader = XmlReader.Create("inlineSchema.xml", settings)

    ' Parse the file. 
    while (reader.Read())
    end while
  end sub

  ' Display any warnings or errors.
  private shared sub ValidationCallBack (sender as object, args as ValidationEventArgs)
     if (args.Severity=XmlSeverityType.Warning)
       Console.WriteLine("   Warning: Matching schema not found.  No validation occurred." + args.Message)
     else
        Console.WriteLine("   Validation error: " + args.Message)
     end if
  end sub 

end class 

EntradaInput

O exemplo usa o arquivo inlineSchema.xml como entrada.The example uses the inlineSchema.xml file as input.

<root>
<!--Start of schema-->
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
            xmlns='xsdHeadCount'
            targetNamespace='xsdHeadCount'>
    <xs:element name='HeadCount'>
        <xs:complexType>
            <xs:sequence>
                <xs:element name='ID' type='xs:unsignedShort' maxOccurs='unbounded' />
            </xs:sequence>
            <xs:attribute name='division' type='xs:string' use='optional' default='QA'/>
        </xs:complexType>
    </xs:element>
</xs:schema>
<!--End of schema-->
<hc:HeadCount xmlns:hc='xsdHeadCount'>
    <ID>12365</ID>
    <ID>43295</ID>
    <division>Accounting</division>
</hc:HeadCount>
</root>

SaídaOutput

Aviso: esquema compatível não encontrado.Warning: Matching schema not found. Nenhuma validação.No validation occurred. Não foi possível encontrar informações sobre o elemento 'root'.Could not find schema information for the element 'root'.

Erro de validação: o elemento 'xsdHeadCount:HeadCount' tem o elemento filho inválido 'division'.Validation error: The element 'xsdHeadCount:HeadCount' has invalid child element 'division'. 'ID' esperado.Expected 'ID'.

Comentários

Importante

Os sinalizadores de validação de ProcessInlineSchema e de ProcessSchemaLocation de um objeto de XmlReaderSettings não são definidos por padrão.The ProcessInlineSchema and ProcessSchemaLocation validation flags of an XmlReaderSettings object are not set by default. Quando esses sinalizadores são definidos, XmlResolver do objeto de XmlReaderSettings é usado para resolver os locais de esquema encontrados no documento de instância em XmlReader.When these flags are set, the XmlResolver of the XmlReaderSettings object is used to resolve schema locations encountered in the instance document in the XmlReader. Se o XmlResolver objeto for null , os locais de esquema não serão resolvidos, mesmo se os ProcessInlineSchema ProcessSchemaLocation sinalizadores de validação e estiverem definidos.If the XmlResolver object is null, schema locations are not resolved even if the ProcessInlineSchema and ProcessSchemaLocation validation flags are set.

Os esquemas adicionados durante a validação adicionar novos tipos e podem alterar o resultado de validação de documento que está sendo validada.Schemas added during validation add new types and can change the validation outcome of the document being validated. Como resultado, os esquemas externos só devem ser resolvidos de fontes confiáveis.As a result, external schemas should only be resolved from trusted sources.

A desabilitação do ProcessIdentityConstraints sinalizador (habilitado por padrão) é recomendada ao validar documentos XML grandes e não confiáveis em cenários de alta disponibilidade em um esquema com restrições de identidade em uma grande parte do documento.Disabling the ProcessIdentityConstraints flag (enabled by default) is recommended when validating, untrusted, large XML documents in high availability scenarios against a schema with identity constraints over a large part of the document.

Aplica-se a

Confira também