Главная страница
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.015 c
15-1190608909
DeadLord
2007-09-24 08:41
2007.10.21
из бэйсика в дэлфи


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


15-1190622031
Некто
2007-09-24 12:20
2007.10.21
Приложение использующее множество IP-адресов


1-1186570029
DmitrichJ
2007-08-08 14:47
2007.10.21
Excel: перечисление всех страничек. Как?


15-1190155991
Константинов
2007-09-19 02:53
2007.10.21
Настройка фрейвола