1. 程式人生 > >MFC讀寫XML檔案

MFC讀寫XML檔案

  1. 檔案頂部加入 
  2. #import "msxml3.dll"; 
  3. usingnamespace MSXML2; 
  4. //這兩句作用是,在程式的資料夾下生成MSXML3.TLH和MSXML3.TLI兩個檔案; 
  5. --------------------------------------------------------- 
  6. 建立一個XML檔案; 
  7. ::CoInitialize(NULL); 
  8. MSXML2::IXMLDOMDocumentPtr XMLDOC; 
  9. MSXML2::IXMLDOMElementPtr XMLROOT; 
  10. HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30)); 
  11. if(!SUCCEEDED(HR)) 
  12.   MessageBox("faild!!"); 
  13. return; 
  14. XMLROOT = XMLDOC->createElement("ROOT"); 
  15. XMLROOT->setAttribute("ID","12345");  //設定根標籤的屬性; 
  16. XMLDOC->appendChild(XMLROOT); 
  17. CString TMP; 
  18. MSXML2::IXMLDOMElementPtr XMLNODE; 
  19. for(int I=0;I<10;I++) 
  20.   TMP.Format("%d",I); 
  21.   XMLNODE = XMLDOC->createElement((_bstr_t)("NODE"+TMP)); 
  22.   XMLNODE->put_text((_bstr_t)"NODETEXTS");//設定標籤的文字內容; 
  23.   XMLNODE->setAttribute("ID",(_variant_t)TMP);//設定標籤的屬性及內容;
  24.   XMLNODE->setAttribute("NAME","NODENAME"); 
  25.   XMLROOT->appendChild(XMLNODE); 
  26. XMLDOC->save("XMLTEST.XML"); 
  27. XMLNODE.Release(); 
  28. XMLROOT.Release(); 
  29. XMLDOC.Release(); 
  30. ::CoUninitialize(); 
  31. ------------------------------------------------------------------ 
  32. 讀取一個XML; 
  33. ::CoInitialize(NULL); 
  34. MSXML2::IXMLDOMDocumentPtr XMLDOC;  
  35. MSXML2::IXMLDOMElementPtr XMLROOT; 
  36. MSXML2::IXMLDOMElementPtr XMLELEMENT; 
  37. MSXML2::IXMLDOMNodeListPtr XMLNODES; //某個節點的所以位元組點
  38. MSXML2::IXMLDOMNamedNodeMapPtr XMLNODEATTS;//某個節點的所有屬性;
  39. MSXML2::IXMLDOMNodePtr XMLNODE; 
  40. HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30)); 
  41. if(!SUCCEEDED(HR)) 
  42.   MessageBox("faild!!"); 
  43. return; 
  44. XMLDOC->load("XMLTEST.XML"); 
  45. XMLROOT = XMLDOC->GetdocumentElement();//獲得根節點;
  46. XMLROOT->get_childNodes(&XMLNODES);//獲得根節點的所有子節點;
  47. long XMLNODESNUM,ATTSNUM; 
  48. XMLNODES->get_length(&XMLNODESNUM);//獲得所有子節點的個數;
  49. CString TMP; 
  50. TMP.Format("%d",XMLNODESNUM); 
  51. MessageBox(TMP); 
  52. for(int I=0;I<XMLNODESNUM;I++) 
  53.   XMLNODES->get_item(I,&XMLNODE);//獲得某個子節點;
  54.   XMLNODE->get_attributes(&XMLNODEATTS);//獲得某個節點的所有屬性;
  55.   XMLNODEATTS->get_length(&ATTSNUM);//獲得所有屬性的個數;
  56. for(int J=0;J<ATTSNUM;J++) 
  57.   { 
  58.    XMLNODEATTS->get_item(J,&XMLNODE);//獲得某個屬性;
  59.    CString T1 = (char*)(_bstr_t)XMLNODE->nodeName; 
  60.    CString T2 = (char*)(_bstr_t)XMLNODE->text; 
  61.    MessageBox(T1+" = "+T2); 
  62.   } 
  63. //MessageBox((_bstr_t)XMLNODE->nodeName+": "+(_bstr_t)XMLNODE->text); 
  64. return; 
  65. //XMLDOC->save("XMLTEST.XML"); 
  66. XMLNODES.Release(); 
  67. XMLNODE.Release(); 
  68. XMLROOT.Release(); 
  69. XMLDOC.Release(); 
  70. ::CoUninitialize(); 
  71. --------------------------------------------------------- 
  72. 總結: 
  73. XML檔案檔型別:MSXML2::IXMLDOMDocumentPtr; 
  74. 單個元素型別:MSXML2::IXMLDOMElementPtr; 
  75. 單個節點型別:MSXML2::IXMLDOMNodePtr; 
  76. 所有子節點型別:MSXML2::IXMLDOMNodeListPtr; 
  77. 所有屬性型別:MSXML2::IXMLDOMNamedNodeMapPtr; 
  78. 獲得節點個數的方法:get_length(); 
  79. 獲得所有子節點的方法:get_childNodes(); 
  80. 獲得指定節點的方法:get_item(索引號,單個節點型別變數); 
  81. 寫入單個節點的文字內容方法:put_text((_bstr_t)"內容"); 
  82. 獲得單個節點的文字內容屬性:XMLNODE->text; 
  83. 獲得單個屬性的內容屬性:XMLNODEATT->text; 
  84. 節點名的屬性為:XMLNODE->nodeName; 
  85. --------------------------------------------------------------- 
  86. XML建立檔案一般過程: 
  87. ::CoInitialize(NULL); 
  88. HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30)); 
  89. if(!SUCCEEDED(HR)) 
  90.   MessageBox("faild!!"); 
  91. return; 
  92. XMLROOT = XMLDOC->createElement("ROOT");//建立檔案; 
  93. 操作檔案..................... 
  94. XMLDOC->save("XMLTEST.XML");//儲存檔案; 
  95. XMLNODE.Release(); 
  96. XMLROOT.Release(); 
  97. XMLDOC.Release(); 
  98. ::CoUninitialize(); 
  99. ------------------------------------------------------------------------------ 
  100. 載入檔案過程式: 
  101. ::CoInitialize(NULL); 
  102. HRESULT HR = XMLDOC.CreateInstance(_uuidof(MSXML2::DOMDocument30)); 
  103. if(!SUCCEEDED(HR)) 
  104.   MessageBox("faild!!"); 
  105. return; 
  106. XMLDOC->load("XMLTEST.XML"); 
  107. 檔案操作......................... 
  108. XMLDOC->save("XMLTEST.XML");//可以儲存對檔案的修改;
  109. XMLNODES.Release(); 
  110. XMLNODE.Release(); 
  111. XMLROOT.Release(); 
  112. XMLDOC.Release(); 
  113. ::CoUninitialize(); 

相關推薦

MFCXML檔案

檔案頂部加入 #import "msxml3.dll"; usingnamespace MSXML2; //這兩句作用是,在程式的資料夾下生成MSXML3.TLH和MSXML3.TLI兩個檔案; ---------------------------------------------------------

Java:使用DOM4j來實現XML檔案中的屬性和元素

DOM4可以讀取和新增XML檔案的屬性或者元素 讀取屬性: public static void ReadAttributes() throws DocumentException { File file = new File("D:\\cmz\\java\\XMLTest\\Custom

Java:簡單的XML檔案之使用DOM4J

Dom4J方式解析XML檔案。dom4j是非官方提供的xml檔案解析方式,因此需要去第三方下載dom4j的jar包 File file = new File("D:\\chengmuzhe\\java\\JavaOOP6.0\\students.xml"); SAXReader reader = n

C++XML檔案(libxml2庫)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

C++XML檔案(使用tinyxml庫)

使用以下程式碼之前,需要下載TinyXml庫,幷包含到工程下 #include <stdio.h> #include "tinyxml.h" #include <iostream> #include <cstring> usin

PythonXML檔案

什麼是XML XML是可擴充套件標記語言(Extensible Markup Language)的縮寫,其中標記是關鍵部分。使用者可以建立內容,然後使用限定標記標記它,從而使每個單詞、短語或塊成為可識別、可分類的資訊。 標記語言從早起的私有公司和政府制定形式逐

PHPXML檔案的四種方法

  PHP對XML檔案進行讀寫操作的方法一共有四種,分別是:字串方式直接讀寫、DOMDocument讀寫、XMLWrite寫和XMLReader讀、SimpleXML讀寫,本文將依次對這四種方法進行介紹。   介紹之前首先對本文例子使用的資料和檔案進行說明。本文寫XML檔案

MFC配置檔案

##這是一個讀寫配置檔案的類 .h檔案 #pragma once #include <wtypes.h> #include <afxstr.h> #include <afxcoll.h> //配置檔案類 讀寫ini

MFCini檔案方法

VC中用函式讀寫ini檔案的方法          ini檔案(即Initialization file),這種型別的檔案中通常存放的是一個程式的初始化資訊。ini檔案由若干個節(Section)組成,每個Section由若干鍵(Key)組成,每個Key可以賦相應的值。讀寫ini檔案實際上就是讀寫某個的Sec

android 中xml檔案時取得路徑的方法/data/sdcard/src

  package com.eboy.readwritexml; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream;

tinyxml2XML檔案的例程

例程很簡單,因此就不再囉嗦了,直接上程式碼。 test.xml內容: <?xml version="1.0"?> <scene name="Depth"> <surface id="A001" type="Camera"> <

C# XML檔案的方法詳細總結

XmlDocument類的屬性 屬性 說明 Attributes 當前節點的屬性集合 BaseURI 當前節點的基URI ChildNodes 節點的所有子節點 Doc

Matlabxml檔案

xml檔案以文件物件模型表示,簡稱DOM(Document Object Model)。在Matlab中,使用xmlread讀取xml檔案成DOM節點,對xml檔案的操作轉化成對DOM節點的操作,使用xmlwrite把DOM節點寫入到xml檔案中。 Matla

一次程式碼重構之旅-快速xml檔案工具類封裝

   為了滿足系統的靈活性,有些功能經常需要用到配置檔案,一般是xml格式的居多.如何能快速讀寫配置檔案呢?    以前都是用dom4j提供的api來讀寫xml檔案,用dom4j讀寫配置檔案總感覺像是在結構化的處理問題,能不能直接把xml檔案和JavaBean之間相互轉換呢

Qt:QXMLStreamReader、QXMLStreamWriter,XML檔案例項

效果圖: 需求: 開啟對應格式的XML檔案,讀入到QTreewidget樹中,並能將XML檔案另存為,寫入到磁碟。 原始碼: main.cpp #include "mainwindow.h" #include <QApplication> int

cocos2dxxml檔案

首先包含標頭檔案 #include "tinyxml2/tinyxml2.h" usingnamespace tinyxml2; //data.xml檔案內容 <Chapters> <Chapter> <Name>Misty Va

使用jdomxml檔案

 JDOM是一種適合Java程式設計師來使用的Java XML解析器,而dom,dom4j適用於不同的語言. 程式碼如下: process.xml <?xml version="1.0" encoding="UTF-8"?><Process> <

vs2008下用MFCexcel檔案

CApplication app1; CWorkbooks books; CWorkbook book; CWorksheets sheets; CWorksheet sheet; CRange range; CRange iCell; LPDISPATCH lpDisp; COleVariant vResu

C++通過TinyXML類庫XML檔案

TinyXML是一個開源的解析XML的解析庫,能夠用於C++,能夠在Windows或Linux中編譯。這個解析庫的模型通過解析XML檔案,然後在記憶體中生成DOM模型,從而讓我們很方便的遍歷這棵XML樹。DOM模型即文件物件模型,是將整個文件分成多個元素(如書、章、節、段等)

qtxml檔案

1、DOM方式 寫xml檔案,以QDomText方式寫,程式碼如下 QFile file("d:/test.txt"); file.open(QIODevice::WriteOnly); QDomDocument doc; QDomProcessingInstructio