2012-06-05 45 views
2

如果我逐行建立XML,我可以設置編碼,但是當我從文件加載它時,我無法添加編碼。參見:爲什麼TXMLDocument在序列化爲字符串時省略了編碼?

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編碼?

+3

只是一個旁註,不要以這種方式實例化'TXMLDocument'。使用['LoadXMLData'](http://docwiki.embarcadero.com/Libraries/en/Xml.XMLDoc.LoadXMLData)函數實例化'IXMLDocument'。 – TLama

回答

4

您將XML保存爲WideString。根據定義,一個WideString是UTF16編碼的,因此在指定另一種編碼方面沒有任何意義。 IIRC,你可以指定encoding="UTF-16",它不會被刪除,因爲這就是它。

但是,如果您將XML文檔保存到流中,則可以指定不同的編碼。

相關問題