![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
xml, loadxml
FS © (2012-06-07 12:27:00)Есть 5 xml-файлов в разных кодировках:
<A>
"Тест"
<C>"Test"</C>
<D>"123"</D>
</A>
Успешно загружаются только содержимое файлов в ANSI и UTF8WithoutBOM. При загрузке содержимого файла в кодировке UTF-8 и ост. выкидывает ошибку - ошибка в элементе верхнего уровня документа. Как загружать содержимое файла в различных кодировка?
procedure TForm1.Button1Click(Sender: TObject);
var
Doc: IXMLDOMDocument;
SL: TStrings;
begin
SL := TStringList.Create;
//SL.LoadFromFile('D:\ANSI.xml');
//SL.LoadFromFile('D:\UTF8WithoutBOM.xml');
SL.LoadFromFile('D:\UTF8.xml');
//SL.LoadFromFile('D:\UCS-2BE.xml');
//SL.LoadFromFile('D:\UCS-2LE.xml');
Doc := CoDOMDocument.Create;
Assert(Doc.loadXML(SL.Text), DOC.parseError.reason);
SL.Free;
end;
Cobalt (2012-06-07 15:45:00) [1]пиши лог с содержимым строки (только в Юникод-поддерживающий лог, типа OutputDebugStringW)
И уже этот лог имеет смысл рассматривать
Омлет (2012-06-07 15:43:00) [2]
> В чем может быть проблема?
Зависит от ошибки.
FS (2012-06-07 15:20:00) [3]Суть проблемы - GET-запрос к серверу возвращает XML, которая сохраняется в переменную типа string. Дальше эта переменная передается в качестве парамера в метод loadXML (IXMLDOMDocument). loadXML завершается с ошибкой (возвращает False). Такое происходит очень редко. В чем может быть проблема?
Омлет (2012-06-07 13:09:00) [4]
> StringList
*TStrings
Омлет (2012-06-07 13:08:00) [5]Точнее так: StringList не умеет корректно загружать юникод-файлы.
Омлет (2012-06-07 13:05:00) [6]SL.Text - это разве WideString?
FS (2012-06-07 12:29:00) [7]<A>
<E>"Тест"</E>
<C>"Test"</C>
<D>"123"</D>
</A>
FS (2012-06-07 12:28:00) [8]поправлю
<A>
"Тест"
<C>"Test"</C>
<D>"123"</D>
</A>