У меня есть устаревший код (я его не писал), который всегда включал атрибут кодирования, но перекомпилируя его в 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';