XmlReaderSettings.ValidationFlags Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia wartość wskazującą ustawienia weryfikacji schematu. To ustawienie dotyczy XmlReader obiektów, które weryfikują schematy (ValidationType właściwość ustawiona na ValidationType.Schema
wartość ).
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
Wartość właściwości
Bitowa kombinacja wartości wyliczenia, które określają opcje weryfikacji. ProcessIdentityConstraints i AllowXmlAttributes są domyślnie włączone. ProcessInlineSchema, ProcessSchemaLocationi ReportValidationWarnings są domyślnie wyłączone.
Przykłady
Poniższy przykład weryfikuje plik XML względem wbudowanego schematu ProcessInlineSchema XML, włączając ustawienie. Czytnik XML jest skonfigurowany do wyświetlania ostrzeżeń dotyczących walidacji, dlatego w elemecie głównym jest również wyświetlane oczekiwane ostrzeżenie.
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
W przykładzie użyto pliku inlineSchema.xml jako danych wejściowych.
<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>
Wynik jest następujący:
Ostrzeżenie: nie można odnaleźć pasującego schematu. Nie nastąpiła walidacja. Nie można odnaleźć informacji o schemacie elementu "root".
Błąd walidacji: element "xsdHeadCount:HeadCount" ma nieprawidłowy element podrzędny "division". Oczekiwany identyfikator.
Uwagi
Ważne
ProcessInlineSchema Flagi XmlReaderSettings sprawdzania poprawności obiektu i ProcessSchemaLocation nie są domyślnie ustawione. Gdy te flagi są ustawione, XmlResolverXmlReaderSettings obiekt jest używany do rozpoznawania lokalizacji schematu napotkanych w dokumencie wystąpienia w pliku XmlReader.
XmlResolver Jeśli obiekt to null
, lokalizacje schematu nie są rozpoznawane, nawet jeśli ProcessInlineSchema flagi i ProcessSchemaLocation walidacji są ustawione.
Schematy dodane podczas walidacji dodają nowe typy i mogą zmienić wynik weryfikacji dokumentu, który jest weryfikowany. W związku z tym schematy zewnętrzne powinny być rozpoznawane tylko z zaufanych źródeł.
Wyłączenie flagi ProcessIdentityConstraints (domyślnie włączonej) jest zalecane podczas weryfikowania, niezaufanych, dużych dokumentów XML w scenariuszach o wysokiej dostępności względem schematu z ograniczeniami tożsamości w dużej części dokumentu.