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
,则即使设置了 和 ProcessSchemaLocation 验证标志,ProcessInlineSchema也不会解析架构位置。
在验证过程中添加的架构会添加新类型,并且可能更改被验证的文档的验证结果。 因此,只应从可信的源解析外部架构。
ProcessIdentityConstraints在高可用性方案中针对对大部分文档具有标识约束的架构验证不受信任的大型 XML 文档时,建议禁用默认启用的标志 (启用) 。