我有始终包含编码属性的旧代码(我没有编写),但是将其重新编译到 D2010,TXMLDocument 不再包含编码。因为 XML 数据在标签和数据上都有重音字符,所以 TXMLDocument.LoadFromFile 简单地抛出 EDOMParseErros 说在文件中发现了一个无效字符。相关代码:
Doc := TXMLDocument.Create(nil);
try
Doc.Active := True;
Doc.Encoding := XMLEncoding;
RootNode := Doc.CreateElement('Test', '');
Doc.DocumentElement := RootNode;
<snip>
//Result := Doc.XMl.Text;
Doc.SaveToXML(Result); // Both lines gives the same result
在旧版本的 Delphi 中,会生成以下行:
<?xml version="1.0" encoding="ISO-8859-1"?>
在 D2010 上,生成:
<?xml version="1.0"?>
如果我手动更改线路,所有工作都像过去几年一样正常工作。
更新: XMLEncoding 是一个常量,定义如下
XMLEncoding = 'ISO-8859-1';