Bueno, perdón por el retraso en contestar, pero no he podido ponerme a ello antes.
Al final el error se produce por una cosa muy tonta:
En Delphi XE2, dentro de la función "StringToVariantArray" del archivo "Datasnap.xmlxform.pas" venía esta línea:
Código Delphi
[-] Move(M.AsAnsi(S).ToPointer^, PByte(LArray)^, Len);
... Pero en la versión de Delphi XE7 viene así:
Código Delphi
[-] Move(M.AsUtf8(S).ToPointer^, PByte(LArray)^, Len);
En fin, es posible que efectivamente el XML a parsear no sea un utf-8 válido, pero copiando el archivo pas dentro de los fuentes del proyecto y dejando la función anterior de esta forma funciona:
Código Delphi
[-] Move(M.AsAnsi(S).ToPointer^, PByte(LArray)^, Len);
En fin, gracias por todo, y espero que esta solución le sirva a alguien también.
El tema puede darse por cerrado
Saludos