XmlReaderSettings.ValidationFlags XmlReaderSettings.ValidationFlags XmlReaderSettings.ValidationFlags XmlReaderSettings.ValidationFlags Property

Definizione

Ottiene o imposta un valore che indica le impostazioni di convalida dello schema.Gets or sets a value indicating the schema validation settings. Questa impostazione si applica a oggetti XmlReader che convalidano schemi (proprietà ValidationType impostata su 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

Valore della proprietà

Combinazione bit per bit di valori di enumerazione che specificano le opzioni di convalida.A bitwise combination of enumeration values that specify validation options. ProcessIdentityConstraints e AllowXmlAttributes sono abilitati per impostazione predefinita.ProcessIdentityConstraints and AllowXmlAttributes are enabled by default. ProcessInlineSchema, ProcessSchemaLocation e ReportValidationWarnings sono disabilitate per impostazione predefinita.ProcessInlineSchema, ProcessSchemaLocation, and ReportValidationWarnings are disabled by default.

Esempi

Nell'esempio seguente viene convalidato un file XML rispetto a uno schema XML inline ProcessInlineSchema abilitando l'impostazione.The following example validates an XML file against an inline XML Schema by enabling the ProcessInlineSchema setting. Il lettore XML è configurato per la visualizzazione degli avvisi di convalida, SP viene visualizzato anche l'avviso previsto sull'elemento radice.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
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 

InputInput

In questo esempio viene utilizzato il file inlineSchema.xml come input.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>

OutputOutput

Avviso: Schema corrispondente non trovato.Warning: Matching schema not found. Nessuna convalida eseguita.No validation occurred. Impossibile creare informazioni sullo schema per l'elemento "root".Could not find schema information for the element 'root'.

Errore di convalida: L'elemento ' xsdHeadCount: organico ' contiene l'elemento figlio ' Division ' non valido.Validation error: The element 'xsdHeadCount:HeadCount' has invalid child element 'division'. Previsto "Identificatore".Expected 'ID'.

Commenti

Importante

Per impostazione predefinita, i flag di convalida ProcessInlineSchema e ProcessSchemaLocation dell'oggetto XmlReaderSettings non sono impostati.The ProcessInlineSchema and ProcessSchemaLocation validation flags of an XmlReaderSettings object are not set by default. Se questi flag sono impostati, verrà utilizzata la proprietà XmlResolver dell'oggetto XmlReaderSettings per risolvere i percorsi dello schema rilevati nel documento di istanza nel tipo 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 l' XmlResolver oggetto è null, i percorsi dello schema non vengono risolti ProcessInlineSchema anche ProcessSchemaLocation se i flag di convalida e sono impostati.If the XmlResolver object is null, schema locations are not resolved even if the ProcessInlineSchema and ProcessSchemaLocation validation flags are set.

Gli schemi aggiunti durante la convalida aggiungono nuovi tipi e possono alterare l'esito della convalida del documento in esame.Schemas added during validation add new types and can change the validation outcome of the document being validated. Di conseguenza, gli schemi esterni devono essere risolti solo da origini attendibili.As a result, external schemas should only be resolved from trusted sources.

La disabilitazione ProcessIdentityConstraints del flag (abilitata per impostazione predefinita) è consigliata per la convalida, i documenti XML di grandi dimensioni e non attendibili in scenari a disponibilità elevata rispetto a uno schema con vincoli di identità in una parte significativa del 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.

Si applica a

Vedi anche