Вы можете перехватить XML перед десериализацией и отредактировать по своему вкусу с помощью stringreplace. Вам нужно подключиться к одному из событий RIO.
Обновление: подключитесь здесь:
HTTPRIO1AfterExecute (const MethodName: строка; SOAPResponse: TStream);
SOAPResponse - это поток, с которым не так просто поиграться, как со строкой, но он, безусловно, можно изменить. Я могу опубликовать пример кода завтра днем.
Редактировать: OnAfterExecute присутствует в D2007 и более поздних версиях, и вы можете использовать его в D2005 с помощью источников SOAP D2007. Не уверен насчет D7! Вы можете быть SOL.
Редактировать: В D7 вы, вероятно, могли бы взломать код для предоставления собственного события OnAfterExecute. то есть измените rio.pas, чтобы включить обработчик для вас. Кроме того, распространенной ошибкой при работе с потоковым объектом является сбой при установке позиции на 0, когда вы закончите.
Редактировать: вы также можете редактировать запрос в BeforeExecute, хотя, возможно, не с кодом Delphi7. В D2010 (который я сейчас имею перед собой) SOAPRequest является потоком. В D2007 (с которым я много работал, но на самом деле использую код D2007 на D2005), я считаю, что это строка. В моем проекте D2005 / 2007 мы интенсивно редактируем запрос с помощью ряда операторов StringReplace () в OnBeforeExecute.