关闭

Delphi与XML专题之二 -----Delphi 与 XML 示例(直接利用IXMLDocument)

标签: xmldelphiintegerfunctionstring
1406人阅读 评论(0) 收藏 举报
分类:

http://blog.csdn.net/tianguanleiok/
(*) 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;


0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:404498次
    • 积分:4626
    • 等级:
    • 排名:第6284名
    • 原创:53篇
    • 转载:116篇
    • 译文:0篇
    • 评论:59条
    最新评论
    Open Source