![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#31
|
||||
|
||||
![]() Вопрос такой: как сделать так, чтобы при создании/добавлении в Xml новых элементов, они добавлялись на следующую строку, а то получается, что все в куче. Возможно ли как-то автоматически ? А не по-ручному. ОООчень надо !
|
#32
|
|||
|
|||
![]() Если вы имеете в виду сохранение в структурированном виде в файл, то можно вот так:
Код:
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
|
||||
|
||||
![]() Спасибо именно это и нужно было !
|
#34
|
||||
|
||||
![]() если я записываю в файл, затем сохраняю и выполняю твою функцию, то ничего не записывается, как исправить ?
При создании файла всё нормально. |
#35
|
|||
|
|||
![]() Цитата:
|
#36
|
||||
|
||||
![]() Нет, я немного не так записал вот как правлильно:
Когда я добавляю 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
|
|||
|
|||
![]() Что я запутался - на что отвечать, а на что не надо?
![]() Проблема-то в чем? XML.SaveToFile и должна сохранять файл неформатированным, т.е. как он хранится в свойстве XML, так и сохраняет. Для форматирования используйте процедуру, которую я писал. |
#38
|
||||
|
||||
![]() Проблема-то не такая уж большая вот в чем: когда я с помощью функции "function CreatePage(XML:IXMLDocument;page:integer):boolean; " добавляю(т.е. создаю) новую страницу, то всё в куче.
|
#39
|
|||
|
|||
![]() Код:
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; А где вы пытаетесь сохранить форматированный после добавления <page>? Я в коде этого места не вижу. |
#40
|
||||
|
||||
![]() У меня эта строка стоит там же, не знаю почему я её в код не записал, ладно, мне это сейчас и не так уж и нужно.
ЗЫ: она всё равно сохраняла в кучу. Может из-за того, что эта функция у меня вызывалась, когда изменялось Memo1 ? Можете не отвечать, т.к. это мне сейчас не нужно ![]() |
#41
|
|||
|
|||
![]() Дабы не открывать новую ветку про тот же XML спрошу здесь:
Необходимо работать с XML в консольном приложении. При установке свойства Active в True вываливается exception "Не был произведен вызов CoInitialize". Собственно что это и что с ним сделать? Разобрался. Решение: http://www.delphikingdom.com/asp/listerrors.asp?ID=62 Последний раз редактировалось Grunch, 14.04.2008 в 11:38. |