如果我是逐行构建XML,我可以设置编码,但是当我从文件加载时,我无法添加编码。参见:
procedure TForm1.Button1Click(Sender: TObject);
var
x : TXMLDocument;
s : string;
w : WIdeString;
begin
s := '<?xml version="1.0"?><a><b/></a>';
x := TXMLDocument.Create(Self);
x.XML.Text := s;
x.Active := True;
x.Encoding := 'UTF-8';
x.DocumentElement.childNodes['b'].attributes['x'] := '1';
x.SaveToXML(w);
ShowMessage(w);
end;
有趣的是结果中缺少“编码”部分!
如何使结果包含XML编码?
答案 0 :(得分:4)
您将XML保存为WideString。根据定义,WideString是UTF16编码的,因此在指定其他编码时没有任何意义。 IIRC,你可以指定一个encoding="UTF-16"
,不会被删除,因为它就是这样。
但是,如果您因此将XML文档保存到流中,则可以指定不同的编码。