System.Xml.XmlReader.Create 方法

本文提供了此 API 参考文档的补充说明。

Create大多数重载都包含接受settings对象的XmlReaderSettings参数。 可以使用此对象来:

注意

尽管 .NET 包含类的具体实现XmlReader(例如XmlNodeReaderXmlTextReader,和XmlValidatingReader类),但我们建议使用Create该方法创建XmlReader实例。

默认设置

如果使用 Create 不接受 XmlReaderSettings 对象的重载,则使用以下默认读取器设置:

设置 默认值
CheckCharacters true
ConformanceLevel ConformanceLevel.Document
IgnoreComments false
IgnoreProcessingInstructions false
IgnoreWhitespace false
LineNumberOffset 0
LinePositionOffset 0
NameTable null
DtdProcessing Prohibit
Schemas 空的 XmlSchemaSet 对象
ValidationFlags ProcessIdentityConstraints 启用
ValidationType None
XmlResolver null

常用方案的设置

下面是 XmlReaderSettings 一些典型 XML 读取器方案应设置的属性。

要求 设置
数据必须是格式正确的 XML 文档。 ConformanceLevel 指定为 Document
数据必须是格式正确的 XML 分析实体。 ConformanceLevel 指定为 Fragment
必须针对 DTD 验证数据。 DtdProcessingParse
ValidationType 重命名为 DTD
必须针对 XML 架构验证数据。 ValidationTypeSchema
Schemas 要用于验证的 XmlSchemaSet 。 请注意, XmlReader 不支持 XML-Data Reduced (XDR) 架构验证。
必须针对内联 XML 架构验证数据。 ValidationTypeSchema
ValidationFlags 重命名为 ProcessInlineSchema
类型支持。 ValidationTypeSchema
SchemasXmlSchemaSet要使用的。

XmlReader 不支持 XML 数据缩减 (XDR) 架构验证。

异步编程

在同步模式下,该方法 Create 从文件、流或文本读取器的缓冲区读取第一块数据。 如果 I/O 操作失败,可能会引发异常。 在异步模式下,第一个 I/O 操作与读取操作一起发生,因此发生读取操作时将引发异常。

安全注意事项

默认情况下,使用XmlReaderXmlUrlResolver没有用户凭据的对象打开资源。 这意味着,默认情况下,XML 读取器可以访问不需要凭据的任何位置。 使用 XmlResolver 属性控制对资源的访问:

示例

此示例创建一个 XML 读取器,该读取器去除无关紧要的空白、条带注释,并执行片段级一致性检查。

XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create("books.xml", settings);
Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.IgnoreWhitespace = true
settings.IgnoreComments = true
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)

以下示例使用 XmlUrlResolver 默认凭据访问文件。

// Set the reader settings.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
settings.IgnoreProcessingInstructions = true;
settings.IgnoreWhitespace = true;
' Set the reader settings.
Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.IgnoreComments = true
settings.IgnoreProcessingInstructions = true
settings.IgnoreWhitespace = true
// Create a resolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Set the reader settings object to use the resolver.
settings.XmlResolver = resolver;

// Create the XmlReader object.
XmlReader reader = XmlReader.Create("http://ServerName/data/books.xml", settings);
' Create a resolver with default credentials.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials

' Set the reader settings object to use the resolver.
settings.XmlResolver = resolver

' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("http://ServerName/data/books.xml", settings)

以下代码将读取器实例包装在另一个读取器中。

XmlTextReader txtReader = new XmlTextReader("bookOrder.xml");
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("urn:po-schema", "PO.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create(txtReader, settings);
Dim txtReader As XmlTextReader = New XmlTextReader("bookOrder.xml")
Dim settings As New XmlReaderSettings()
settings.Schemas.Add("urn:po-schema", "PO.xsd")
settings.ValidationType = ValidationType.Schema
Dim reader As XmlReader = XmlReader.Create(txtReader, settings)

此示例链接读取器以添加 DTD 和 XML 架构验证。

XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.DTD;
XmlReader inner = XmlReader.Create("book.xml", settings); // DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader outer = XmlReader.Create(inner, settings);  // XML Schema Validation
Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.DTD
Dim inner As XmlReader = XmlReader.Create("book.xml", settings) ' DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd")
settings.ValidationType = ValidationType.Schema
Dim outer As XmlReader = XmlReader.Create(inner, settings)  ' XML Schema Validation