Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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>


Наверх

Титульная страница Поиск, карта сайта Написать письмо