(1)//从文件存取 function writeXML(XMLName,nodeName,nodeValue:string;proID:integer):integer; var xmlDoc:IXMLDocument; rootNode,CNode,NNode:IXMLNode; iValue,iReturn:integer; sValue:string; begin result := -1 ; if not fileExists(XMLName) then exit; xmlDoc := TXMLDocument.Create(nil); //***** 创建TXMLDocument ***** xmlDoc.Active := True; iReturn:=-1; try try xmlDoc.LoadFromFile(XMLName) ; //***** 载入XML文件 ***** xmlDoc.Version := '1.0'; xmlDoc.Encoding :='GB2312'; rootNode := xmlDoc.ChildNodes.FindNode('Document'); //***** 查找结点 ***** CNode := rootNode.ChildNodes.FindNode('product'); if CNode<>nil then begin // iValue := CNode.GetNodeValue; //***** 取结点值 ***** iValue:=CNode.Attributes['proID']; //***** 取结点属性 ***** while (proID<>iValue) and (CNode<>nil) do //找某 begin NNode := rootNode.ChildNodes.FindSibling(CNode,1); //***** 查找下一结点 ***** CNode := NNode; if CNode<>nil then iValue:=CNode.Attributes['proID']; end; end; if CNode=nil then //某 没找到 **** begin CNode:=rootNode.AddChild('product'); //***** 添加一个结点 ***** CNode.SetAttribute('proID', proID); // ***** 写结点属性 ***** end; CNode.SetAttribute('uninstall', 'false'); NNode := CNode.ChildNodes.FindNode(nodeName); if NNode=nil then NNode:=CNode.AddChild(nodeName); NNode.SetNodeValue(nodeValue) ; // ***** 写结点值 ***** xmlDoc.SaveToFile(XMLName) ; except iReturn:=-1; end; finally xmlDoc := nil ; //***** 释放TXMLDocument ***** result := iReturn; end; end;
(2)删除结点 function removeNode(XMLName:string;proID:integer):integer; var xmlDoc:IXMLDocument; rootNode,CNode,NNode:IXMLNode; iValue,iReturn:integer; sValue:string; begin result := -1 ; if not fileExists(XMLName) then exit; xmlDoc := TXMLDocument.Create(nil); xmlDoc.Active := True; iReturn:=-1; try try xmlDoc.LoadFromFile(XMLName) ; xmlDoc.Encoding :='GB2312'; rootNode := xmlDoc.ChildNodes.FindNode('Document'); CNode := rootNode.ChildNodes.FindNode('product'); if CNode<>nil then begin iValue:=CNode.Attributes['proID']; while (proID<>iValue) and (CNode<>nil) do //找某 begin NNode := rootNode.ChildNodes.FindSibling(CNode,1); CNode := NNode; if CNode<>nil then iValue:=CNode.Attributes['proID']; end;
end; if CNode<>nil then rootNode.ChildNodes.Remove(CNode); //找到 ,删除