UTF-16 удалось победить примитивным способом.
Код:
ttext2:='<?my_tag?>'; //добавляемая строка
myFileFrom.OPEN('C:\1_16.xml'); //исходный хмл-файл
myFileTo.CREATE('C:\123.xml'); //новый хмл-файл с новым тегом
iii:=0;
WHILE myFileFrom.POS<>myFileFrom.LEN DO BEGIN //читаем исходный файл по символьно.
iii+=1;
myFileFrom.READ(ch);
myFileTo.WRITE(ch); //и переписываем в новый.
IF iii=116 THEN //пока не дойдем до нужного места (опять же определено эксперементально)
FOR ttt:=1 to strlen(ttext2) DO BEGIN
myFileTo.WRITE(ttext2[ttt]); //пишем новые символы из строки
myFileTo.WRITE(ch0); //к каждому символу добавляем символ ch0:=0;
END;
END;
myFileTo.CLOSE();
myFileFrom.CLOSE();
Естественно, также можно бороться и с utf-8, только ch0 добавлять не нужно.
PS. добавлять ноль нужно для латиницы, что добавлять для русских символов - не знаю, нужно смотреть.