var
XMLDoc:TXMLDocument;
XMLNode: IXMLNode;
child: IXMLNode;
begin
CoInitialize(nil); //初始化ActiveX
XMLDoc:=TXMLDocument.Create(nil);
XMLDoc.Active := true;
XMLNode := XMLDoc.AddChild('ConsumeRec');
child := XMLNode.AddChild('EventsDateTime');
child.Text := dateTostr(Now);
XMLDoc.SaveToFile('c:\ok.xml');
XMLDoc.Free; //不能用,因为接口自动释放内存。
CoUninitialize;
end;
动态创建TXMLDocument对XML文件进行读取和写入
参考:http://overblue.blogbus.com/logs/13954596.html
{ 读取XML }
var
XML : TXMLDocument;
Node1 : IXMLNode;
DocIntf : IXMLDocument;
begin
XML := TXMLDocument.Create(nil);
DocIntf := XML; //防止接口被自动释放,少了这一句会发生AV
try
XML.LoadFromStream(Strem);
XML.Active := True;
{ 读ReportObject属性 }
Node1 := XML.DocumentElement.ChildNodes.FindNode('ReportObjectProperty');
ReportName := Node1.ChildNodes.FindNode('ReportName').GetAttributeNS('Value', '');
ReportType := Node1.ChildNodes.FindNode('ReportType').GetAttributeNS('Value', '');
DataViewName := Node1.ChildNodes.FindNode('DataViewName').GetAttributeNS('Value', '');
SQLStr := Node1.ChildNodes.FindNode('SQLStr').GetAttributeNS('Value', '');
finally
XML := nil;
DocIntf := nil;
end;
end;
注意接口与对象的释放。