Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #31  
Старый 04.01.2008, 23:14
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Восклицание Очень ВАЖНО !

Вопрос такой: как сделать так, чтобы при создании/добавлении в Xml новых элементов, они добавлялись на следующую строку, а то получается, что все в куче. Возможно ли как-то автоматически ? А не по-ручному. ОООчень надо !
Ответить с цитированием
  #32  
Старый 05.01.2008, 06:19
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Если вы имеете в виду сохранение в структурированном виде в файл, то можно вот так:
Код:
procedure SaveFormattedXML(XMLDoc: TXMLDocument; const FileName: String);
var
  F: TFileStream;
  S: String;
begin
  F := TFileStream.Create(FileName, fmCreate);
  try
    S := FormatXMLData(XMLDoc.XML.Text);
    F.WriteBuffer(S[1], Length(S));
  finally
    F.Free;
  end;
end;
Ответить с цитированием
  #33  
Старый 05.01.2008, 09:10
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Хорошо Спасибо

Спасибо именно это и нужно было !
Ответить с цитированием
  #34  
Старый 05.01.2008, 09:21
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Вопрос Вот вопрос

если я записываю в файл, затем сохраняю и выполняю твою функцию, то ничего не записывается, как исправить ?
При создании файла всё нормально.
Ответить с цитированием
  #35  
Старый 05.01.2008, 16:29
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Цитата:
Сообщение от Oleg
если я записываю в файл, затем сохраняю и выполняю твою функцию, то ничего не записывается, как исправить ?
При создании файла всё нормально.
Покажите код.
Ответить с цитированием
  #36  
Старый 05.01.2008, 21:59
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Лампочка

Нет, я немного не так записал вот как правлильно:
Когда я добавляю page и t id, то всё в куче, вот код:
Код:
function CreatePage(XML:IXMLDocument;page:integer):boolean;
var
  ParentNode,ChildNode : IXMLNode;
begin
  try
    ParentNode := XML.DocumentElement.AddChild('page');
    with ParentNode do begin
      Attributes['id']    := page;
      Attributes['title'] := 'no title';
      Attributes['descr'] := '***';
    end;
     ChildNode := ParentNode.AddChild('t');
      with ChildNode do begin
        Attributes['id'] := '1';
        Text             := 'none;
      end;
    XML.SaveToFile('test.xml');
   finally
  end;
end;

Дополнительно(можете не отвечать)
Кстати когда я добавляю только t id на заранее созданную страницу, то
получается:
Код:
<t id="Id">none</t></page>
//в смысле page тоже на одной строке, но это ещё нормально.(можете не отвечать)
Ответить с цитированием
  #37  
Старый 06.01.2008, 03:54
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Что я запутался - на что отвечать, а на что не надо?
Проблема-то в чем? XML.SaveToFile и должна сохранять файл неформатированным, т.е. как он хранится в свойстве XML, так и сохраняет. Для форматирования используйте процедуру, которую я писал.
Ответить с цитированием
  #38  
Старый 06.01.2008, 15:06
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Смех Вот в чем проблемка

Проблема-то не такая уж большая вот в чем: когда я с помощью функции "function CreatePage(XML:IXMLDocument;page:integer):boolean; " добавляю(т.е. создаю) новую страницу, то всё в куче.
Ответить с цитированием
  #39  
Старый 06.01.2008, 19:20
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Код:
function CreatePage(XML:IXMLDocument;page:integer):boolean;
var
  ParentNode,ChildNode : IXMLNode;
begin
  try
    ParentNode := XML.DocumentElement.AddChild('page');
    with ParentNode do begin
      Attributes['id']    := page;
      Attributes['title'] := 'no title';
      Attributes['descr'] := '***';
    end;
     ChildNode := ParentNode.AddChild('t');
      with ChildNode do begin
        Attributes['id'] := '1';
        Text             := 'none;
      end;
    XML.SaveToFile('test.xml');
   finally
  end;
end;
Вот выделенная строка - она сохраняет неформатированный текст XML.
А где вы пытаетесь сохранить форматированный после добавления <page>? Я в коде этого места не вижу.
Ответить с цитированием
  #40  
Старый 06.01.2008, 19:45
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Сообщение

У меня эта строка стоит там же, не знаю почему я её в код не записал, ладно, мне это сейчас и не так уж и нужно.
ЗЫ: она всё равно сохраняла в кучу. Может из-за того, что эта функция у меня вызывалась, когда изменялось Memo1 ?
Можете не отвечать, т.к. это мне сейчас не нужно
Ответить с цитированием
  #41  
Старый 14.04.2008, 10:05
Grunch Grunch вне форума
Новичок
 
Регистрация: 08.04.2008
Адрес: Краснодар
Сообщения: 52
Репутация: 10
По умолчанию

Дабы не открывать новую ветку про тот же XML спрошу здесь:
Необходимо работать с XML в консольном приложении. При установке свойства Active в True вываливается exception "Не был произведен вызов CoInitialize". Собственно что это и что с ним сделать?
Разобрался. Решение: http://www.delphikingdom.com/asp/listerrors.asp?ID=62

Последний раз редактировалось Grunch, 14.04.2008 в 11:38.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:55.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter