delphi 与XML实例

转载 2004年10月23日 09:32:00

(*) 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;

delphi下使用indy进件socket通信的简单实例介绍

      很久没有专门用过delphi 了,大概有二三年了吧,最近接手一与银行有关的项目,对方银行使用的是unix操作系统,用socket与项目程序进行通信。而这边项目肯定是要在windows下跑的...
  • hui717
  • hui717
  • 2010年07月30日 22:22
  • 9138

Delphi 纯文本转换为xml

需要读取数据生成xml文件,要求为空值时不能为”“格式,而要为”“格式,所以单纯用TXMLDocument实现不了。 而使用TFileStream将xml格式的纯文本保存为.xml文件后,会发生读取...
  • NowMore_Guo
  • NowMore_Guo
  • 2016年12月20日 18:03
  • 452

Delphi 中遍历 XML 文档的完整示例

        XML 文档的节点是标准的树形结构,可以通过递归或者回溯算法来遍历所有的节点。    本例使用递归算法为例,制作了2个遍历 XML 文档的例子。    第一个例子,给出一个 XML 节...
  • zhangking
  • zhangking
  • 2007年10月20日 08:10
  • 4652

Delphi与XML

////////////////////////////////////////////////////////////////////////创建IXMLDOMDocument对象的三种方法:(1)...
  • LuckyJan
  • LuckyJan
  • 2003年06月05日 09:09
  • 2831

Delphi操作XML

Delphi操作XML Delphi操作XMl,只要使用 NativeXml。我是用的版本是4.02。NativeXML的使用方法比较简单,但是功能很强大。 XE2的话,要在simdesign.i...
  • gjtao1130
  • gjtao1130
  • 2015年02月28日 17:08
  • 1637

基本DELPHI中XML编程--简单节点增删改查

XML文档简单读写方法CST 2005-07-08最近参加一个项目需要写XML,因此我开始学习XML在delphi中的编程方法,我将我STEP BY STEP的入门过程记录下来,希望经验丰富的前辈能给...
  • mrtechno
  • mrtechno
  • 2005年07月16日 00:16
  • 5183

delphi 操作 XML (二)

四、符号引用(Symbol Reference) 4.1.类(Classes) 4.1.1.TComponentAccess类   TComponentAccess = class(TCompo...
  • lailai186
  • lailai186
  • 2014年05月21日 10:40
  • 2973

Delphi中关于读取XML内容

XME内容为:   - -             用TXMLDocument来解析.不过因为的Item因为是一个集合,所以只能循环一个一个读,有点...
  • beyondqd
  • beyondqd
  • 2011年08月26日 16:54
  • 2236

Delphi 操作 XML(一)

一、欢迎   本帮助文件提供从SimDesign BV的NativeXml组件的信息。 二、购买NativeXml!   NativeXml现在是开源的,但支持是仅专门适用于购买NativeXm...
  • lailai186
  • lailai186
  • 2014年05月21日 10:35
  • 6538

使用Delphi解析XML 文档

使用Delphi解析XML 文档[ 2005-08-24 13:17:23 | 作者: cyberfan ] 字体大小: 大 | 中 | 小 对于XML的解析主要有 DOM(文档对象模型) 和SAX(...
  • pgnet
  • pgnet
  • 2008年11月06日 15:30
  • 8012
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:delphi 与XML实例
举报原因:
原因补充:

(最多只允许输入30个字)