Форум: "Основная";
Текущий архив: 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