System.Xml.XmlReaderSettings 类

方法描述

指定在 Create 方法创建的 XmlReader 对象上支持的一组功能。

语法定义(C# System.Xml.XmlReaderSettings 类 的用法)

[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
public sealed class XmlReaderSettings

构造函数

构造函数名称 构造函数描述
XmlReaderSettings 初始化 XmlReaderSettings 类的新实例。

成员/方法

方法名称 方法描述
Clone 创建 XmlReaderSettings 实例的副本。
Equals(Object) 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
GetType 获取当前实例的 Type。 (继承自 Object。)
MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
Reset 将设置类的成员重置为各自的默认值。
ToString 返回表示当前对象的字符串。 (继承自 Object。)

提示和注释

在 .NET Framework 2.0 版发行版中,Create 方法是获取 XmlReader 实例的首选机制。 Create 方法使用 XmlReaderSettings 类指定要在创建的 XmlReader 对象中实现哪些功能。

有关更多信息,请参见 创建 XML 读取器。

安全注意事项

以下是在使用 XmlReaderSettings 类时需要考虑的事项。

默认情况下,不设置 XmlReaderSettings 对象的 ProcessInlineSchema 和 ProcessSchemaLocation 验证标志。 当设置了这些标记时,XmlReaderSettings 对象的XmlResolver 将用于解析在 XmlReader 中的实例文档中遇到的架构位置。 如果 XmlResolver 对象为null,则即使设置了 ProcessInlineSchema 和 ProcessSchemaLocation 验证标志,也不解析架构位置。

在验证过程中添加的架构会添加新类型,并且可能更改被验证的文档的验证结果。 因此,仅应当从受信任的源解析外部架构。

验证错误信息可能会公开敏感的内容模型信息。 验证错误信息和警告消息是使用 ValidationEventHandler 委托来处理的,如果没有为 XmlReaderSettings 对象提供事件处理程序(验证警告不会导致引发 XmlSchemaValidationException),它们将作为 XmlSchemaValidationException 公开。 此内容模型信息不应在不受信任的情况下公开。 默认情况下,将禁止显示验证警告消息,但是,您可以通过设置 ReportValidationWarnings 标志来报告验证警告消息。

XmlSchemaValidationException 的 SourceUri 属性返回的架构文件的 URI 路径导致异常。 SourceUri 属性不应在不受信任的情况下公开。

在高可用性方案中,当对照一个架构利用涵盖文档大部分内容的标识约束来验证不受信任的大型 XML 文档时,建议禁用 ProcessIdentityConstraints 标志(默认为启用)。

XmlReaderSettings 对象可能包含敏感信息,如用户凭据。 当缓存 XmlReaderSettings 对象时,或者将 XmlReaderSettings 对象从一个组件传递到另一个组件时,需要十分谨慎。

DTD 处理默认情况下被禁用。 如果启用 DTD 处理,则需要注意,有一些 DTD 可能来自不受信任的来源,从而有可能会遭受拒绝服务攻击。 使用 XmlSecureResolver 来限制 XmlReader 可访问的资源。

不要接受来自不受信任源的支持组件(如 NameTable、XmlNamespaceManager 和 XmlResolver 对象)。

使用 XmlReader 的应用程序的内存使用量可能与所分析的 XML 文档的大小有关。 提交要分析的超大的 XML 文档是“拒绝服务”攻击的一种形式。 可以通过设置 MaxCharactersInDocument 属性来限制能够分析的文档的大小,然后通过设置 MaxCharactersFromEntities 属性来限制扩展实体所产生的字符数。

System.Xml.XmlReaderSettings 类例子

下面的示例创建一个 XmlReader,该读取器使用一个具有必要凭据的 XmlUrlResolver。

// Create an XmlUrlResolver with the credentials necessary to access the Web server.
XmlUrlResolver resolver = new XmlUrlResolver();
System.Net.NetworkCredential myCred;
myCred  = new System.Net.NetworkCredential(UserName,SecurelyStoredPassword,Domain);  
resolver.Credentials = myCred;

XmlReaderSettings settings = new XmlReaderSettings();
settings.XmlResolver = resolver;

// Create the reader.
XmlReader reader = XmlReader.Create("http://serverName/data/books.xml", settings);

继承层次结构

System.Object

System.Xml.XmlReaderSettings

命名空间

namespace: System.Xml

程序集: System.Xml(在 System.Xml.dll 中)

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。