Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.21;
Скачать: CL | DM;

Вниз

SimpleXML.pas   Найти похожие ветки 

 
vladislav_osn   (2007-09-23 22:02) [0]

Может кто использовал в своих проектах этот модуль?

Не могу понять, как мне дописать данные в уже существующий файл.

Например, это создает файл снова, перезаписывая уже существующий, чем дополнить?:
var
 Xml: IXmlDocument;
 XmlElem0, XmlElem1: IXmlNode;
begin
 Xml := CreateXmlDocument("test");

 XmlElem0 := Xml.DocumentElement.AppendElement("t1");
 XmlElem1 := XmlElem0.AppendElement("t2");
 XmlElem1.SetDateTimeAttr("date", Now);

 Xml.Save("test_xml.xml");


Попробовал уже все возможные варианты, но так и не смог добиться успеха.


 
Плохиш ©   (2007-09-23 23:25) [1]

Нет в xml такого понятия, как "дописать в файл". Считываешь файл в IXMLDocument, дополняешь всё, что нужно и записываешь поверх старого.


 
vladislav_osn   (2007-09-24 13:22) [2]

Да проблем в том, что бы считать это и потом дополнить. Просто открыть и считать данные - без проблем. А у меня получается открываю, считываю и пытаюсь дополнить -- не получается. Не знаю как это сделать.

Открываю так:
var
 Xml: IXmlDocument;
 XmlElem: IXmlNode;
begin
 Xml := CreateXmlDocument;
 Xml.Load("test_xml.xml");
 if Xml <> nil then
 begin
   XmlElem := Xml.DocumentElement.SelectSingleNode("t1");
   .......


Любые попытки привязать запись к этому коду, не получились.


 
Галинка ©   (2007-09-24 17:21) [3]

Так узел надо сначала создать. Потом инициализировать, а потом добавить к существующему документу. Что-то типа такого:
function AddNodeToXml(nname, nintext : string; ParentNode : IXmlNode) : boolean
var
  XmlDoc: IXmlDocument;
  XmlElem : IXmlNode;
begin
  XmlDoc := CreateXmlDocument();
  XmlDoc.Load("***.***");
  try
     XmlElem := XmlDoc.CreateElement(nname);
     XmlElem.InnerText := nintext;
     ParentNode.AppendChild(XmlElem);
     Result = true;
  except
     Result = false;
  end;
Result


 
Галинка ©   (2007-09-24 17:23) [4]

Извиняюсь. Так наверное нагляднее:
function AddNodeToXml(nname, nintext : string; ParentNode : IXmlNode) : boolean
var
 XmlDoc: IXmlDocument;
 XmlElem : IXmlNode;
begin
 XmlDoc := CreateXmlDocument();
 XmlDoc.Load("***.***");
 try
    XmlElem := XmlDoc.CreateElement(nname);
    XmlElem.InnerText := nintext;
    ParentNode.AppendChild(XmlElem);
    Result = true;
 except
    Result = false;
 end;
end;


 
Плохиш ©   (2007-09-25 00:08) [5]


> Галинка ©   (24.09.07 17:23) [4]

Нда, осталось выяснить какое отношение имеет переданный ParentNode к загруженному файлу. Опять мухи и котлеты в одной куче...



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

Текущий архив: 2007.10.21;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.046 c
2-1190886488
Nikfel
2007-09-27 13:48
2007.10.21
Список файлов и папок.


15-1190708630
KSergey
2007-09-25 12:23
2007.10.21
Программы нагрузки для процессоров


15-1190451190
РВА
2007-09-22 12:53
2007.10.21
Где взять ключ для Turbo Delphi


15-1190138260
Mozart
2007-09-18 21:57
2007.10.21
знатели Exchange!!! ПОМОГИТЕ!!!!


4-1176989866
Dmitry_177
2007-04-19 17:37
2007.10.21
Правильно завершить ожидающий поток





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский