XmlReaderSettings.ValidationFlags 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定值,表示結構描述驗證設定。 這個設定會套用至可驗證結構描述的 XmlReader 物件 (ValidationType 屬性設為 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
屬性值
指定驗證選項的列舉值位元組合。 ProcessIdentityConstraints 和 AllowXmlAttributes 預設為啟用。 ProcessInlineSchema、ProcessSchemaLocation 和 ReportValidationWarnings 預設為停用。
範例
下列範例會藉由啟用 ProcessInlineSchema 設定,針對內嵌 XML 架構驗證 XML 檔案。 XML 讀取器設定為顯示驗證警告,因此您也會在根元素上看到預期的警告。
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
該範例採用 inlineSchema.xml 檔案做為輸入。
<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>
輸出如下所示:
警告:找不到相符的架構。 未發生驗證。 找不到項目 root 的結構描述資訊。
驗證錯誤:元素 'xsdHeadCount:HeadCount' 有無效的子元素 'division'。 預期的是 'ID'。
備註
重要
依預設,不會設定 ProcessInlineSchema 物件的 ProcessSchemaLocation 及 XmlReaderSettings 驗證旗標。 當設定這些旗標時,XmlResolver 物件的 XmlReaderSettings 可用於解析在 XmlReader 的執行個體文件中發現的結構描述位置。
XmlResolver如果物件是 null
,即使ProcessInlineSchema已設定 和 ProcessSchemaLocation 驗證旗標,架構位置也不會解析。
驗證期間加入的結構描述會加入新型別,並可變更要驗證之物件的驗證結果。 因此,外部結構描述應僅從受信任的來源解析。
ProcessIdentityConstraints根據預設停用旗標 () ,建議在驗證、不受信任、大型 XML 檔時,針對具有檔大量部分之身分識別條件約束的架構驗證、不受信任、大型 XML 檔。