Boa noite. Desculpe a demora. Diversas atividades aqui.
Para simplificar, vamos focar somente no arquivo enviado como exemplo.
Se ler o arquivo e salvar em seguida, utilizando o TStringList, tudo fica certo, os caracteres não são trocados e o conteúdo é validado com sucesso.
var sl:TStringlist;
begin
sl:=TStringList.Create;
sl.LoadFromFile('C:\...\exemplo.xml', TEncoding.UTF8);
sl.SaveToFile('C:\...\teste.xml');
Ao utilizar o acbr, passo a ter o problema:
var sl:TStringlist;
begin
sl:=TStringList.Create;
sl.LoadFromFile('C:\...\exemplo.xml', TEncoding.UTF8);
ACBrNFe1.NotasFiscais.Clear;
ACBrNFe1.NotasFiscais.LoadFromString(sl.Text);
ACBrNFe1.NotasFiscais.GravarXML('C:\...\saída.xml');