delphi基于html页面和xml实现表单填写,Delphi 与 XML 示例(直接利用IXMLDocument)

(*) uses msxml,XMLIntf,XMLDoc;

(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);  //找到 ,删除

xmlDoc.SaveToFile(XMLName) ;

iReturn := 0;

except

iReturn:=-1;

end;

finally

xmlDoc := nil ;

result := iReturn;

end;

end;

标签:XML,end,nil,示例,Delphi,NNode,rootNode,xmlDoc,CNode

来源: https://www.cnblogs.com/530263009QQ/p/11068559.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值