读取类型化数据

更新:November 2007

XmlReader 类允许调用方读取 XML 数据并以简单类型化的公共语言运行库 (CLR) 值的形式返回值,而不是以字符串的形式返回值。 使用提供的方法,用户可以使用系统类型获取值,而不是使用字符串获取值。 这些新方法使用户可以以最适合编码作业的表示形式获取值,而不必手动执行值的转换和分析。

如果 XML 数据没有任何关联的架构或数据类型信息,XmlReader 类会尝试将节点值转换为指定的 CLR 类型。 例如,如果调用 ReadContentAsBoolean 方法,读取器会尝试将文本转换为 Boolean 对象。

XmlReader 类使用的规则由 W3C XML Schema Part 2: Datatypes recommendation(W3C XML 架构第 2 部分:数据类型建议)定义。

类型化内容

ReadContentAsBooleanReadContentAsDateTimeReadContentAsDoubleReadContentAsLongReadContentAsIntReadContentAsString 方法用于返回特定的 CLR 对象。 这些方法在当前的读取器位置读取文本内容并将其转换为所请求的返回类型。 文本、空白、有效空白和 CDATA 节串联在一起。 跳过注释和处理指令,并自动解析实体引用。

ReadContentAs 方法用于读取文本内容并返回指定类型的对象。

ReadContentAsObject 方法返回最适合的类型的包装 CLR,类型通过 ValueType 属性指定。 如果内容未类型化,读取器将以字符串的形式返回内容。

调用了任何 ReadContentAs 方法之后,读取器将位于下一个 ElementEndElement 节点上。

下表描述 ReadContentAs 方法如何处理每种节点类型。

XmlNodeType

返回值

读取器行为

Text

CDATA

Whitespace

SignificantWhitespace

EntityReference

EndEntity

将文本、CDATA、空白和有效空白节点的串联内容转换为所请求的类型。

移至下一个开始元素或结束元素标记。 实体引用自动展开。

Attribute

与属性值的 XmlConvert.ToXXX 相同。

读取器仍保留在当前位置。

Comment

ProcessingInstruction

忽略处理指令 (PI) 或注释,读取 PI 或注释后面的串联文本内容。

移至下一个开始元素或结束元素标记。 实体引用自动展开。

EndElement

空字符串。

读取器仍保留在当前位置。

Element

XmlDeclaration

None

Document

DocumentType

Notation

Entity

DocumentFragment

引发 InvalidOperationException

未定义,尽管通常读取器将保留在当前位置。

类型化的元素内容

XmlReader 类包含的方法专门用于读取类型化的元素内容。 这些方法只能在元素节点类型上调用。 这些方法不能在包含子元素或混合内容的元素上使用。 在调用时,XmlReader 对象读取开始标记,读取元素内容,然后移过结束元素标记。 将忽略处理指令和注释并展开实体。

ReadElementContentAsBooleanReadElementContentAsDateTimeReadElementContentAsDoubleReadElementContentAsLongReadElementContentAsIntReadElementContentAsString 方法读取元素内容并返回特定的 CLR 对象。

ReadElementContentAs 方法用于读取元素内容并返回指定类型的对象。

ReadElementContentAsObject 方法返回最适合的类型的包装 CLR,类型通过 ValueType 属性指定。 将 XML 数据类型映射到 CLR 类型 主题描述 XmlReader 类如何确定最适合的 CLR 类型。 如果内容未类型化,读取器将以字符串的形式返回内容。

请参见

概念

用 XmlReader 读取 XML

如何:使用架构映射读取类型化数据

如何:读取无架构映射的类型化数据

将 XML 数据类型映射到 CLR 类型