Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Вниз

TXMLDocuemnt, проблема с кирилицей   Найти похожие ветки 

 
Calm ©   (2004-10-20 15:01) [0]

Уважаемые коллеги,
пишу сохранение данных в 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 16:16) [1]

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


 
Calm ©   (2004-10-20 16:37) [2]

Не помогает :(
Пишу
<?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:40) [3]

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


 
Calm ©   (2004-10-20 16:42) [4]

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


 
Calm ©   (2004-10-20 16:44) [5]

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

:(


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

Да как это не решает??
Скопируй вот это
<?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:57) [7]

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

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

спасибо, Algol.

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


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


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

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



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
14-1097728339
Dmitriy O.
2004-10-14 08:32
2004.11.07
Разработка ПО сторонними организациями.


1-1098761666
Кто---то
2004-10-26 07:34
2004.11.07
Как запретить TShellTreeView обращаться к дисководу ?


3-1097246118
Step[B.M.]
2004-10-08 18:35
2004.11.07
Как получить выходной параметр процедуры не используя SUSPEND


14-1098094155
TUser
2004-10-18 14:09
2004.11.07
Дот НЕТ


1-1098810253
aab
2004-10-26 21:04
2004.11.07
как реализовать Совет дня?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский