好的,我正在使用 StreamReader 从流中读取数据。流中的数据不是 xml,它可以是任何东西。
基于输入 StreamReader,我正在使用 XmlTextWriter 写入输出流。基本上,当一切都说完了,输出流包含来自输入流的数据,这些数据包装在父元素中包含的元素中。
我的问题是双重的。数据以块的形式从输入流中读取,StreamReader 类返回 char[]。如果输入流中的数据包含“]]>”,则需要将其拆分为两个 CDATA 元素。首先,如何在 char 数组中搜索“]]>”?其次,因为我是分块阅读,所以“]]>”子字符串可以分成两个块,那么我该如何解释呢?
我可能会将 char[] 转换为字符串,然后对其进行搜索替换。这将解决我的第一个问题。在每次读取时,我还可以检查最后一个字符是否是“]”,以便在下一次读取时,如果前两个字符是“]>”,我将开始一个新的 CDATA 部分。
这看起来几乎没有效率,因为它涉及将 char 数组转换为字符串,这意味着要花费时间来复制数据,并占用两倍的内存。有没有更有效的方法,无论是在速度方面还是在内存方面?