Это на самом деле не отвечает на ваш вопрос, но на него уже отвечали не раз, поэтому, пожалуйста, разрешите мне это в сторону.
Я видел много случаев, когда люди считывали содержимое потока в строку, чтобы можно было выполнить некоторые действительно простые манипуляции. Во многих случаях и, конечно, в этом случае, операция может быть выполнена, даже не делая копию всей строки и не работая над этим.
Приложив немного больше усилий, чем ваш существующий код, вы могли бы написать метод StreamStringReplace, который принимает в качестве параметров входной поток, выходной поток, строку поиска и строку замены. Это было бы намного эффективнее, особенно если ваши документы XML могут стать массивными.