Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.014 c
15-1190354682
vajo
2007-09-21 10:04
2007.10.21
Vista &amp; XP


3-1182168098
Павел Калугин
2007-06-18 16:01
2007.10.21
Очередные извращения в TSql


2-1190654029
Евгений Р.
2007-09-24 21:13
2007.10.21
Номер записи в tCollection


11-1174241380
Dmitriy___
2007-03-18 21:09
2007.10.21
StatusBar


2-1191234035
F@T@L_Err0r
2007-10-01 14:20
2007.10.21
TServerSoker и TClientSoker




   Наверх