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

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

TXMLDocuemnt, проблема с кирилицей [D6, Win2k]


Calm ©   (2004-10-20 15:01:00) 

Уважаемые коллеги,
пишу сохранение данных в xml-файл.
Написал вот такой метод:

procedure TSmeta.Save(FileName: string);
var
 xmlWorkList:IXMLNode;
 xmlWork:IXMLNode;
 xmlWorkParam:IXMLNode;
 xmlKoeffList:IXMLNode;
 i:Integer;
begin
 dmCore.XMLDocument.XML.Add('<?xml version="1.0" standalone=''yes'' ?>');
 dmCore.XMLDocument.XML.Add('<smeta>');  // создаю xml с корневым элементом
 dmCore.XMLDocument.XML.Add('</smeta>');
 dmCore.XMLDocument.Active:=True;

 xmlWorkList:=dmCore.XMLDocument.DocumentElement.AddChild('works');
 xmlWorkList.Attributes['count']:=Works.Count; // это не требуется, просто тренируюсь записывать атрибуты :)

 // сохраняем все работы
 i:=0;
 while (i<=Works.Count-1) do
 begin
   xmlWork:=xmlWorkList.AddChild('work');

   xmlWorkParam:=xmlWork.AddChild('id');
   xmlWorkParam.Text:=IntToStr(Works[i].id);

   xmlWorkParam:=dmCore.XMLDocument.CreateNode('caption', ntElement);
   xmlWorkParam.Text:=Works[i].Caption;  // это строковое поле с кирилицей
   xmlWork.ChildNodes.Add(xmlWorkParam);

   xmlWorkParam:=xmlWork.AddChild('price_total');
   xmlWorkParam.Text:=FormatFloat('0.#####', Works[i].Price_total);
   Inc(i);
 end;

 dmCore.XMLDocument.SaveToFile(FIleName);

end;


Должен получиться файл примерно структуры:

<?xml version="1.0" standalone="yes"?>
<smeta>
 <works count="2">
   <work>
     <id>0</id>
     <caption>Тестовая запись на русском языке</caption>
     <price_total>10,9</price_total>
   </work>
   <work>
     <id>0</id>
     <caption>Martishkin trud</caption>
     <price_total>13,4</price_total>
   </work>
 </works>
</smeta>

Вызываю метод, получаю на месте кирилицы совершенно непонятные значки неизвестной кодировки.
Возмжно это unicode? как отлючить юникод?

В demos'ах нашел только проект XMLBuilder, но не обнаружил там ответов на свои вопросы :(
Хелп, разумеется, тоже читал внимательно(?) :))

Буду признателен за ссылки с подробными материалами по теме TXMLDocument и с чем его едят.


Algol   (2004-10-20 17:02:00) [1]


> Да, кстати, я таким обазом могу записать любой текст с любыми
> печатными знаками?

Нет, не любыми. Читай спецификацию XML


Calm   (2004-10-20 16:57:00) [2]

Отображается в эксплорере. А у меня собственно к эклсплореру никаких притензий :))

В ставил эту строку в прогу - заработало. Видимо где-то какой-то символ неаккуратно вставился\недописался.

спасибо, Algol.

Да, кстати, я таким обазом могу записать любой текст с любыми печатными знаками?
Как быть с многострочным текстом?


Algol   (2004-10-20 16:52:00) [3]

Да как это не решает??
Скопируй вот это
<?xml version="1.0" encoding="windows-1251" standalone="yes"?>
<smeta>
<works count="2">
  <work>
    <id>0</id>
    <caption>Тестовая запись на русском языке</caption>
    <price_total>10,9</price_total>
  </work>
  <work>
    <id>0</id>
    <caption>Martishkin trud</caption>
    <price_total>13,4</price_total>
  </work>
</works>
</smeta>

В блокнот, сохрани в temp.xml, открой в эксплорере, и скажи мне что оно не отображается!


Calm   (2004-10-20 16:44:00) [4]

Проверил,
использование только кавычек " или только апострофов ' проблемы не решает.

:(


Calm   (2004-10-20 16:42:00) [5]

да вообще-то я этот фрагмент из хелпа взял и до добавления  encoding="windows-1251" это работало. За исключением кириллицы.


Algol   (2004-10-20 16:40:00) [6]

У тебя просто во фрагменте standalone=''yes''два апострофа вместо кавычек ...


Calm   (2004-10-20 16:37:00) [7]

Не помогает :(
Пишу
<?xml version="1.0" standalone=''yes'' encoding="windows-1251" ?>

Получаю исключение с текстом
Invalid for an xml declaration

Line: 1
<?xml version="1.0" standalone='yes' enc' Process stopped ...


Algol   (2004-10-20 16:16:00) [8]

<?xml version="1.0" standalone="yes" encoding="windows-1251"?>


Наверх

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