Da ich gerade vor genau dem selben Problem stand, hier die Lösung:
Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var
S, Encoding:
string;
S8: UTF8String;
XML: IXMLDocument;
begin
Encoding := '
UTF-8';
// ASCII, ISO-8859-1, UTF-8, UTF-16
XML := TXMLDocument.Create(
Nil);
XML.Active := True;
XML.Encoding := Encoding;
if Encoding = '
UTF-16'
then begin
XML.SaveToXML(S);
Memo1.Lines.Add(S);
end else begin
XML.SaveToXML(S8);
Memo1.Lines.Add(
string(S8));
end;
end;
Der Kniff ist, dass sich TXMLDocument unterschiedlich verhält, je nachdem, welchen String-Typ man an SaveToXML übergibt.
Vermutlich verhält sich das auch noch unterschiedlich, je nachdem ob man mit einem NEXTGEN-Compiler (D2009+) oder einem alten arbeitet. Hier getestet mit 10.2.3 Tokyo.