Aí esta a função que uso no ParseText ao invés da stringreplace original:
function StringReplaceLeo(const S, OldPatern: String; NewPattern: String ? String;
Var
Temp: String;
Original: String;
begin
if pos(OldPatern, S) > 0 then
Begin
Original:= S;
Result:= '';
while Length(Original) > 0 do
Begin
Temp:= Copy(Original,1,100000);
Original:= Copy(Original,100001,Length(Original));
Temp:= StringReplace(Temp,OldPatern,NewPattern,[rfReplaceAll]);
Result:= Result + Temp;
End;
End
else
Result := S;
end;
Ficou notávelmente mais rápido em xml grandes como o do estoque,
Em Anexo a unit alterada
ACBrUtil.pas