Хорошо, я читаю данные из потока, используя StreamReader. Данные в потоке не xml, это может быть что угодно.
На основе входного потока StreamReader я пишу в выходной поток с использованием XmlTextWriter. По сути, когда все сказано и сделано, выходной поток содержит данные из входного потока, заключенные в элемент, содержащийся в родительском элементе.
Моя проблема двоякая. Данные читаются из входного потока в чанках, а класс StreamReader возвращает char []. Если данные во входном потоке содержат «]]>», их необходимо разделить на два элемента CDATA. Во-первых, как мне найти "]]>" в массиве символов? И во-вторых, поскольку я читаю порциями, подстрока «]]>» может быть разбита на две порции, так как мне это объяснить?
Я мог бы, вероятно, преобразовать char [] в строку и выполнить поиск по ней. Это решило бы мою первую проблему. При каждом чтении я также мог проверить, был ли последний символ «]», чтобы при следующем чтении, если первые два символа были «]>», я начал новый раздел CDATA.
Вряд ли это кажется эффективным, поскольку включает преобразование массива char в строку, что означает, что нужно потратить время на копирование данных и вдвое больше памяти. Есть ли более эффективный способ, как по скорости, так и по памяти?