C# 同一流上的多个(顺序)XmlReader实例
我的问题应该比较直截了当: 是否(以任何方式)可以为同一个流按顺序创建多个XmlReader对象,而不需要第一个读卡器在流被释放后将其推进到底 示例代码(请注意,对ReadElement的第二次调用将失败,因为第一个读取器出于任何原因将流推进到末尾): 如果“pure.Net”无法实现这一点,那么是否有其他('Light')Xml解析器库支持这种行为?1。凌乱的道路 如果您能够保存每个序列的长度,可以执行以下操作:C# 同一流上的多个(顺序)XmlReader实例,c#,xml,xmlreader,C#,Xml,Xmlreader,我的问题应该比较直截了当: 是否(以任何方式)可以为同一个流按顺序创建多个XmlReader对象,而不需要第一个读卡器在流被释放后将其推进到底 示例代码(请注意,对ReadElement的第二次调用将失败,因为第一个读取器出于任何原因将流推进到末尾): 如果“pure.Net”无法实现这一点,那么是否有其他('Light')Xml解析器库支持这种行为?1。凌乱的道路 如果您能够保存每个序列的长度,可以执行以下操作: int len, i = 0; //len is the length of t
int len, i = 0; //len is the length of the interval
byte[] buffer = new byte[0xff];
while (len --> 0)
buffer[i++] = stream.ReadByte (); //copies the interval
这将分别从中复制一个字节间隔,并将其保存到缓冲区中。然后,您只需将缓冲区分配给一个新的或一个字符串(请参阅重载),就可以使用它
问题是第一次读取操作太贪婪,占用了整个时间间隔
2.原始方式
正如您已经演示的,您可以简单地将流重置回其原始位置(当然,前提是您的流是可查找的)。你如何设想在不寻求帮助的情况下做到这一点?您需要将流内容复制到内存中,然后可以创建所有您喜欢的阅读器。您想解决什么问题?我正在开发一个Xml序列化程序,因为它可以用于网络流等,遗憾的是,查找不是一个选项。此外,向流中写入额外的“内容”以跟踪每个段的起始位置会破坏可读性。该解决方案的问题是,我需要知道xml的每个“位”的长度,我目前正在开发一个xml序列化程序,以及从同一流中读取多个对象的能力(在不破坏Xml可读性的情况下)将是首选,因为这将允许它也用于配置。
int len, i = 0; //len is the length of the interval
byte[] buffer = new byte[0xff];
while (len --> 0)
buffer[i++] = stream.ReadByte (); //copies the interval