System.Xml.XmlTextReader.ReadChars 方法

方法描述

将元素的文本内容读入字符缓冲区。 通过连续调用此方法,可以读取大的嵌入文本流。

语法定义(C# System.Xml.XmlTextReader.ReadChars 方法 的用法)

public int ReadChars(
	char[] buffer,
	int index,
	int count
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
buffer System-Char[] 字符数组,充当文本内容写入到的缓冲区。
index System-Int32 buffer 中的位置,此方法可以从该位置开始写入文本内容。
count System-Int32 要写入 buffer 的字符数。
返回值 System.Int32 读取的字符数。 如果读取器未定位在元素上,或如果当前上下文中没有要返回的其他文本内容,则这可以是 0。

提示和注释

注意

在 .NET Framework 2.0 版 版本中,推荐的做法是使用 XmlReader.Create 方法创建 XmlReader 实例。 这使您可以充分利用此版本中引入的新功能。 有关更多信息,请参见 创建 XML 读取器。

这是处理 XML 文档中非常大的嵌入文本流的最有效的方式。 ReadChars 以每次一个缓冲区的方式返回文本内容,而不是分配大字符串对象。 设计此方法只用于元素节点。 其他节点类型导致 ReadChars 返回 0。

在下面的 XML 中,如果读取器定位在开始标记上,则 ReadChars 返回 test 并将读取器定位在结束标记之后。

复制

test

ReadChars 具有以下功能:

此方法设计只用于元素节点。 其他节点类型导致 ReadChars 返回 0。

此方法返回实际字符内容。 未尝试解析实体、CDATA 或遇到的其他任何标记。 ReadChars 返回开始标记和结束标记之间的所有内容,包括标记。

ReadChars 忽略非格式良好的 XML 标记。 例如,当读取下面的 XML 字符串 12 时,ReadChars 返回 12。 (它从匹配的元素对返回标记并忽略其他内容。)

此方法不进行任何规范化。

当 ReadChars 已到达字符流的结尾时,它返回值 0 并且将读取器定位在结束标记之后。

当使用 ReadChars 时,特性读取方法不可用。

例如,使用以下 XML:

复制

some text

While 循环结束时读取器定位在 元素上。

复制

if (XmlNodeType.Element == reader.NodeType && "thing" == reader.Name)

{

while(0 != reader.ReadChars(buffer, 0, 1)

{

// Do something.

// Attribute values are not available at this point.

}

}

System.Xml.XmlTextReader.ReadChars 方法例子

该示例将 items.xml 文件用作输入。



]>

  Test with an entity: &number;
  test with a child element  stuff
  test with a CDATA section ]]> def
  Test with an char entity: A
  
  1234567890ABCD

异常

异常 异常描述
ArgumentException count 大于 buffer 中指定的空间(缓冲区大小 - index)。
ArgumentNullException buffer 值为 null。
ArgumentOutOfRangeException index < 0 或 count< 0。

命名空间

namespace: System.Xml

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

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.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 系统要求。