TXMLDocument对XML文件进行读取和写入 (bcb)

动态创建TXMLDocument对XML文件进行读取和写入 - [Delphi高级应用]

2008-01-16

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
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 }
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;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi 7是一个用于开发Windows应用程序的集成开发环境(IDE),它支持各种编程语言和技术,包括XML的处理。要读取一个带有三级节点的XML文件,你可以使用Delphi 7自带的XMLDocument组件。 首先,在Delphi 7的工具栏上点击"Components",然后选择"Import Component",再选择"Import ActiveX Control"。在弹出的"Import Component"窗口中,找到并选中"Microsoft XML, v4.0"(或其他适合你的版本),点击"Install"按钮进行安装。安装完成后,可以在"Component Palette"中看到这个组件。 接下来,在你的Delphi项目中,添加一个TXMLDocument组件。在对象树中找到这个组件,找到其属性"FileName",将其设为你要读取XML文件的路径。 然后,点击"Component Palette"中的"XML Nodes",然后点击你的表单(Form)上的任意位置,会自动添加一个TXMLNodeList组件。选中这个组件,找到其属性"RootNode",将其设为TXMLDocument的"DocumentElement"。 接下来,你可以使用TXMLNodeList的属性和方法来访问和操作XML文件中的节点。使用Count属性获取节点数量,使用Nodes属性获取节点列表。 对于三级节点,你可以使用嵌套的循环来遍历和访问它们。例如,你可以使用以下代码: ``` var Level1Node, Level2Node, Level3Node: IXMLNode; NodeList1, NodeList2: IXMLNodeList; i, j: Integer; begin NodeList1 := XMLNode1.ChildNodes; // 一级节点列表 for i := 0 to NodeList1.Count - 1 do begin Level1Node := NodeList1.Item[i]; // 获取一级节点 NodeList2 := Level1Node.ChildNodes; // 二级节点列表 for j := 0 to NodeList2.Count - 1 do begin Level2Node := NodeList2.Item[j]; // 获取二级节点 if Level2Node.NodeName = 'ThirdLevelNode' then // 判断节点名称 begin Level3Node := Level2Node.ChildNodes.First; // 获取三级节点 // 在这里可以对三级节点进行操作 end; end; end; end; ``` 这样,你就可以通过三级节点的名称和位置来读取和处理XML文件中的数据了。记得在代码结束后,释放所使用的组件和内存资源。 希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值