Версия Perl работает так, как вы ожидали.
perl -i -p -e 's/\n//' file
Как указано в комментариях, стоит отметить, что это редактирует на месте. -i.bak
даст вам резервную копию исходного файла перед заменой на случай, если ваше регулярное выражение окажется не таким умным, как вы думали.
Измените способ создания сериализатора. Используйте:
var serializer = new DataContractSerializer(typeof(A));
вместо a.GetType ();
Это работает. Генерируемый Xml отличается - он был примерно таким:
<C> ...
, а теперь он:
<A i:type="C"> ...