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

转载 2006年05月28日 21:01:00

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;


Delphi直接读写XML修改版

unit Unit3; interface uses SysUtils, Variants, Classes, Forms, Windows, msxmldom, XMLDoc, ...
  • fyl_077
  • fyl_077
  • 2013年07月26日 21:23
  • 567

delphi 操作 XML (二)

四、符号引用(Symbol Reference) 4.1.类(Classes) 4.1.1.TComponentAccess类   TComponentAccess = class(TCompo...

Delphi 7验证XML合法性(利用DTD、XSD)

拥有正确语法的XML被称为“形式良好”的XML。通过DTD验证的XML是“合法”的XML。DTD(文档类型定义)的作用是定义XML 文档的合法构建模块。它使用一系列的合法元素来定义文档结构。XML S...

xml文件类,封装了IXMLDocument(C++Builder)

//下面是"my_xml.h"的内容:    (用到了STL) #ifndef my_xmlH #define my_xmlH #include #include #include ...
  • lzkIT
  • lzkIT
  • 2012年08月17日 16:56
  • 588

delphi实现删除XML结点

 遇到了点问题,竟然没办法删除掉,到底是哪里出了问题呢???
  • Z_Quan
  • Z_Quan
  • 2011年04月19日 19:32
  • 949

Delphi语言如何对自定义类进行持久化保存及恢复 (性能远比json/xml高)

Delphi的RTL自身就带有一套很好的资源持久化保存(IDE设计窗体时,保存为DFM格式及编译到EXE里面的资源文件)及恢复机制(EXE启动时对窗体资源的加载),那么应没必要再额外用xml/json...
  • rocklee
  • rocklee
  • 2016年03月18日 11:40
  • 827

简析Delphi中的XML编程

====================================================== 注:本文源代码点此下载 =============================...

Delphi操作xml

====================================================== 注:本文源代码点此下载 =============================...

Delphi 读写XML文件方式

unit UCreateXML;//delphi 写xml文件方式 interface uses Windows, Messages, SysUtils, Variants, Classes,...

php与delphi通过XML进行数据交互

require_once 'xt_var.php'; /* * 返回值说明:     1000: 接收数据成功;     1001: 接收数据失败,失败原因:菜品名称不能为空;     ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi与XML专题之二 -----Delphi 与 XML 示例(直接利用IXMLDocument)
举报原因:
原因补充:

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