Я думаю, что вы думаете на слишком низком уровне. XML не столько "двоичный", сколько абстракция поверх двоичного. Если вы хотите заменить фрагменты XML по мере их появления в вашей строке, вам придется заглянуть в часть пакетов с полезной нагрузкой и найти шаблоны XML ... простой способ - использовать регулярное выражение после преобразования байтов в содержание временно.
После того, как вы выполнили этот поиск и нашли то, что хотите, вы можете заменить то, что хотите заменить, и повторно отправить.
Сложная часть этого заключается в том, что вам, вероятно, потребуется кэшировать некоторые входные данные, прежде чем они покинут ваш компьютер, чтобы вы могли найти начало и конец того, что вы ищете. Что делает это трудным, так это то, что часто вы не знаете, что составляет «начало» и «конец» полезной нагрузки данных.