Главная страница
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.47 MB
Время: 0.019 c
15-1190275092
Layner
2007-09-20 11:58
2007.10.21
Сколько Vista проработает без активации?


15-1190638144
Empleado
2007-09-24 16:49
2007.10.21
И почему я - не таракан?!


2-1190619662
F@T@L_Err0r
2007-09-24 11:41
2007.10.21
TrackBar


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


1-1186379789
Damager
2007-08-06 09:56
2007.10.21
Не работает flat в XP. И пустой caption в toolbuttons