Главная страница
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.48 MB
Время: 0.024 c
6-1171746923
alexm_hs
2007-02-18 00:15
2007.10.21
Идентификатор таблицы маршрутов в коммутаторе


15-1190632245
aap21
2007-09-24 15:10
2007.10.21
Visio 2003 DrawingControl


6-1171884932
inex
2007-02-19 14:35
2007.10.21
сетевой файловый менеджер


4-1176881042
Грициан
2007-04-18 11:24
2007.10.21
Подмена сиволов в окне сторонней программы


2-1190864983
DevilDevil
2007-09-27 07:49
2007.10.21
Hint в произвольном месте. Помогите пожалуйста.