读取类型化数据
更新:November 2007
XmlReader 类允许调用方读取 XML 数据并以简单类型化的公共语言运行库 (CLR) 值的形式返回值,而不是以字符串的形式返回值。 使用提供的方法,用户可以使用系统类型获取值,而不是使用字符串获取值。 这些新方法使用户可以以最适合编码作业的表示形式获取值,而不必手动执行值的转换和分析。
如果 XML 数据没有任何关联的架构或数据类型信息,XmlReader 类会尝试将节点值转换为指定的 CLR 类型。 例如,如果调用 ReadContentAsBoolean 方法,读取器会尝试将文本转换为 Boolean 对象。
XmlReader 类使用的规则由 W3C XML Schema Part 2: Datatypes recommendation(W3C XML 架构第 2 部分:数据类型建议)定义。
类型化内容
ReadContentAsBoolean、ReadContentAsDateTime、ReadContentAsDouble、ReadContentAsLong、ReadContentAsInt 和 ReadContentAsString 方法用于返回特定的 CLR 对象。 这些方法在当前的读取器位置读取文本内容并将其转换为所请求的返回类型。 文本、空白、有效空白和 CDATA 节串联在一起。 跳过注释和处理指令,并自动解析实体引用。
ReadContentAs 方法用于读取文本内容并返回指定类型的对象。
ReadContentAsObject 方法返回最适合的类型的包装 CLR,类型通过 ValueType 属性指定。 如果内容未类型化,读取器将以字符串的形式返回内容。
调用了任何 ReadContentAs 方法之后,读取器将位于下一个 Element 或 EndElement 节点上。
下表描述 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 |
未定义,尽管通常读取器将保留在当前位置。 |
类型化的元素内容
XmlReader 类包含的方法专门用于读取类型化的元素内容。 这些方法只能在元素节点类型上调用。 这些方法不能在包含子元素或混合内容的元素上使用。 在调用时,XmlReader 对象读取开始标记,读取元素内容,然后移过结束元素标记。 将忽略处理指令和注释并展开实体。
ReadElementContentAsBoolean、ReadElementContentAsDateTime、ReadElementContentAsDouble、ReadElementContentAsLong、ReadElementContentAsInt 和 ReadElementContentAsString 方法读取元素内容并返回特定的 CLR 对象。
ReadElementContentAs 方法用于读取元素内容并返回指定类型的对象。
ReadElementContentAsObject 方法返回最适合的类型的包装 CLR,类型通过 ValueType 属性指定。 将 XML 数据类型映射到 CLR 类型 主题描述 XmlReader 类如何确定最适合的 CLR 类型。 如果内容未类型化,读取器将以字符串的形式返回内容。