程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi使用msxml讀取XML/寫入XML內容

Delphi使用msxml讀取XML/寫入XML內容

編輯:Delphi

以前遇到Delphi處理XML文件就感覺頭疼,不知道該用哪種方法比較好,後來知道了msxml方法,個人認為,msxml方法可能不是最好的,不過我個人使用習慣了,覺得還挺好用,所以現在把以前自己讀寫XML的例子發上來,希望能為你提供參考。先了解一下msxml,msxml實際上是Delphi導入Windows的msxml2.dll,所以最終是使用的Windows的方法去解析的XML文件。在PHP中對XML的解析也是用的MSXML,與Delphi的各函數都非常類似。使用時需要在uses中加入msHtml。

使用msxml讀取XML:

01 procedure TForm1.LoadXML(XMLStr: string); 02 var 03   xmldoc: IXMLDOMDocument; 04   rNode, usrNode: IXMLDOMNode; 05   I: Integer; 06 begin 07   XMLdoc := CoDOMDocument.Create; 08   //可以使用這個函數從文件中加載XML 09   //xmldoc.load('d:/XML.txt'); 10   XMLdoc.loadXML(XMLStr); 11   rNode := XMLdoc.selectSingleNode('UserList'); 12   if rNode <> nil then begin 13     for I := 0 to rNode.childNodes.length - 1 do begin 14       usrNode := rNode.childNodes[I]; 15       if usrNode.nodeName = 'User' then begin 16         Memo2.Lines.Add('Name: ' + usrNode.attributes.getNamedItem('Name').text); 17         Memo2.Lines.Add('ID: ' + usrNode.attributes.getNamedItem('ID').text); 18         if usrNode.selectSingleNode('Website') <> nil then 19           Memo2.Lines.Add('Website: ' + usrNode.selectSingleNode('Website').text); 20         if usrNode.selectSingleNode('Intro') <> nil then 21           Memo2.Lines.Add('Intro: ' + usrNode.selectSingleNode('Intro').text); 22    23         Memo2.Lines.Add(''); 24       end; 25     end; 26   end; 27  XMLdoc := nil; 28 end;

使用msxml寫入XML文件:

01 procedure TForm1.UpdateXml(XMLStr: string); 02 var 03   xmldoc: IXMLDOMDocument; 04   rNode, usrNode, webNode, introNode, commentNode: IXMLDOMNode; 05   newAttr: IXMLDOMAttribute; 06 begin 07   XMLdoc := CoDOMDocument.Create; 08   //從文件中加載XML 09   //xmldoc.load('d:/XML.txt'); 10   XMLdoc.loadXML(XMLStr); 11   rNode := XMLdoc.selectSingleNode('UserList'); 12   if rNode <> nil then begin 13     usrNode := XMLdoc.createElement('User'); 14     //若使用以下方式創建NODE,則該NODE不支持一些方法,比如attributes.setNamedItem 15     //這種方法創建的NODE的attributes為nil 16     //usrNode := XMLdoc.createTextNode('User'); 17     rNode.appendChild(usrNode); 18     newAttr := XMLdoc.createAttribute('Name'); 19     newAttr.nodeValue := 'Chen'; 20     usrNode.attributes.setNamedItem(newAttr); 21     newAttr := XMLdoc.createAttribute('ID'); 22     newAttr.nodeValue := '3'; 23     usrNode.attributes.setNamedItem(newAttr); 24     webNode := XMLdoc.createElement('Website'); 25     webNode.appendChild(XMLdoc.createCDATASection('http://www.google.com')); 26     usrNode.appendChild(webNode); 27     introNode := XMLdoc.createElement('Intro'); 28     introNode.appendChild(XMLdoc.createTextNode('I come from TianJin.')); 29     usrNode.appendChild(introNode); 30     commentNode := XMLdoc.createElement('Comment'); 31     commentNode.appendChild(XMLdoc.createComment('This is a comment!')); 32     usrNode.appendChild(commentNode); 33   end; 34   XMLdoc.save('d:\test.XML'); 35   XMLdoc := nil; 36 end;

下面是供測試用的XML文檔代碼,請復制保存成XML格式的文件。

vIEw source print? 01 <?XML version="1.0" encoding="utf-8"?> 02 <UserList> 03   <User Name="Liu" ID="1"> 04     <Website><![CDATA[http://www.codefans.Net]]></Website> 05     <Intro>源碼愛好者</Intro> 06   </User> 07   <User Name="Zhang" ID="2"> 08     <Website><![CDATA[http://www.baidu.com]]></Website> 09     <Intro>百度一下,你就知道</Intro> 10   </User 11 </UserList>
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved