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; 动态创建TXMLDocument对XML文件进行读取和写入 - [Delphi高级应用]Tag:Delphi XML XMLDocument 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://overblue.blogbus.com/logs/13954596.html uses XMLDoc, XMLIntf;
{ 写入XML内容 } var XMLDoc : TXMLDocument; Node1 : IXMLNode; Node2 : IXMLNode; begin XMLDoc := TXMLDocument.Create(nil); try XMLDoc.Active := True; XMLDoc.Version := '1.0'; XMLDoc.Encoding := 'GB2312'; XMLDoc.Options := [doNodeAutoCreate,doNodeAutoIndent,doAttrNull,doAutoPrefix,doNamespaceDecl]; XMLDoc.DocumentElement := XMLDoc.CreateNode('ReportObjectContent'); Node1 := XMLDoc.DocumentElement; Node1 := Node1.AddChild('ReportObjectProperty'); Node2 := Node1.AddChild('ReportName'); Node2.SetAttributeNS('Value', '', ReportName); Node2 := Node1.AddChild('ReportType'); Node2.SetAttributeNS('Value', '', ReportType); Node2 := Node1.AddChild('DataViewName'); Node2.SetAttributeNS('Value', '', DataViewName); Node2 := Node1.AddChild('SQLStr'); Node2.SetAttributeNS('Value', '', SQLStr); XMLDoc.SaveToStream(Stream); finally XMLDoc.Free; end; end; { 读取XML }