2

如果我逐行构建 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 编码?

4

1 回答 1

4

您正在将 XML 保存到 WideString。根据定义, WideString是 UTF16 编码的,因此指定另一种编码毫无意义。IIRC,您可以指定一个encoding="UTF-16"不会被删除的 ,因为它就是这样。

但是,如果您随后将 XML 文档保存到流中,则可以指定不同的编码。

于 2012-06-05T06:39:23.773 回答