Главная страница
    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.04 c
9-1085393686
DanilinSA
2004-05-24 14:14
2004.11.07
Пара вопросов по DelphiX


4-1096024986
MooSE
2004-09-24 15:23
2004.11.07
Как вызвать диалог завершения работы Windows?


14-1097832119
}|{yk
2004-10-15 13:21
2004.11.07
Программа составления генеалогий


14-1098187068
karat
2004-10-19 15:57
2004.11.07
MSSQL, ошибка


4-1096621394
alexeew
2004-10-01 13:03
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский