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 示例(直接利用IXMLDocument)

(*) uses msxml,XMLIntf,XMLDoc;(1)//从文件存取function writeXML(XMLName,nodeName,nodeValue:string;proID:in...
  • LuckyJan
  • LuckyJan
  • 2004年09月01日 15:10
  • 2835

ZT:Delphi直接读取XmL

有时,只需要用XML作一些小的应用,比如只是简单地保存日志或者一些配置,这时我们只需要直接读写XML就好,效率第一。 Delphi盒子有一个直接读写XML文件 (例子和代码),其核心函数为下面两个函数...
  • tingsking18
  • tingsking18
  • 2006年03月24日 08:28
  • 2514

Delphi 纯文本转换为xml

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

Delphi与XML专题之三 ----- Delphi与XML

http://blog.csdn.net/tianguanleiok/ 创建IXMLDOMDocument对象的三种方法:(1)[方法1] 直接创建 IXMLDOMDocument  , 例(1)  ...
  • xuleicsu
  • xuleicsu
  • 2006年05月28日 21:04
  • 1351

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

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

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

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

Delphi操作XML

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

Delphi与XML

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

Delphi中关于读取XML内容

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

delphi 操作 XML (二)

四、符号引用(Symbol Reference) 4.1.类(Classes) 4.1.1.TComponentAccess类   TComponentAccess = class(TCompo...
  • lailai186
  • lailai186
  • 2014年05月21日 10:40
  • 2970
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi与XML专题之二 -----Delphi 与 XML 示例(直接利用IXMLDocument)
举报原因:
原因补充:

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