打印本文 打印本文 关闭窗口 关闭窗口
【我爱DELPHI,我学XML】DAY 1:简单节点增删改查
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2752  更新时间:2009/4/23 18:26:25  文章录入:mintao  责任编辑:mintao
begin

    rootNode:=xmldoc1.Node;

    rootNode:=rootNode.ChildNodes.Nodes[1];  //root-->human

    for i:=0 to ANodeList.Count-1 do

    begin

        rootNode.AddChild(ANodeList.Strings[i]).NodeValue:=AValueList.Strings[i];

    end;

end;

 

 

写入实体节点

StNode定位到要插入实体位置的父节点,AttrNode为实体节点的属性节点。

使用IXMLNODEADDCHILD方法创建一个命名的节点,返回值为新建的节点。

NODEVALUE属性赋值,使用AttrNode对象。

 

procedure TFormXMLTester.addStudent(const sID,sName,sSchool,sLevel:string);

var

    StNode,AttrNode:IXMLNode;

begin

    StNode:=xmldoc1.Node;

    StNode:=StNode.ChildNodes.Nodes[1]; //human

    StNode:=StNode.ChildNodes.Nodes[0]; //human.person

 

    StNode:=StNode.AddChild(''''STUDENT'''');   // human.person.student

    StNode.Attributes[''''SID'''']:=sID;

 

    AttrNode:=StNode.AddChild(''''NAME'''');

    AttrNode.NodeValue :=sName;

 

    AttrNode:=StNode.AddChild(''''SCHOOL'''');  // human.person.student.school

    AttrNode.NodeValue := sSchool;

 

    AttrNode:=StNode.AddChild(''''LEVEL'''');   // human.person.student.level

    AttrNode.NodeValue:=sLevel;

end;

 

 

定位到节点

实体节点的节点名称可能是相同的,通过节点内参数Attribute区分各节点,类似DB中的PK

定位采用3个节点

n         SEARCHNODE 根定位节点,定位到要搜索的层

n         MATCHNODE  用来遍历的节点,遍历的是实体节点,找到后返回的就是这个节点

n         SNODE       实体节点的ATTRIBUTE,用来和KEYWORD比较

 

//通过学号ATTRIBUTE定位STUDENT节点

function  TFormXMLTester.GetNodeBySID (const AID:String):IXMLNode;

var

    //定位     遍历      比较

    SearchNode,matchNode,sNode:IXMLNode;

    sID:string;

    i:integer;

begin

    result:=nil;

    sID:=AID;

 

    SearchNode:=xmldoc1.Node;

    SearchNode:=SearchNode.ChildNodes.Nodes[1];

    SearchNode:=SearchNode.ChildNodes.Nodes[0]; //human.person

 

    matchNode:=SearchNo

上一页  [1] [2] [3]  下一页

打印本文 打印本文 关闭窗口 关闭窗口