溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CMarkup類操作Xml的示例分析

發布時間:2021-09-17 14:13:52 來源:億速云 閱讀:233 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關CMarkup類操作Xml的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一、下載Markup.cpp 和 Markup.h

二、將此兩個文件放置于工程目錄下

三、在需要用到CMarkup的地方 #include "Markup.h"

當然VC中還需要配置一下環境

在VC6.0下:

a.在Markup.cpp的頂端加上 #include"stdafx.h" 或者

b.關閉Markup.cpp的預編譯頭設置,具體方法如下:

Project->Setting  彈出ProjectSetting對話框,在左邊的文件樹下選擇Markup.cpp,然后在 "Settings for" 下拉框下選擇 "All Configurations",選擇 C/C++標簽頁,

接著在Category下拉框下選中 "Precompiled Headers"選項,選中下面的"Not Using Precompiled Headers." 單選按鈕即可

CMarkup類操作Xml的示例分析

CMarkup的基本使用:

例如要讀取如下UserInfos.xml的內容

<?xml version="1.0" encoding="UTF-8" ?>   
 <UserInfos>  
  <UserInfo>  
   <name>WangYao</name>   
   <age>25</age>   
  </UserInfo>  
  <UserInfo>  
   <name>Hisin</name>   
   <age>27</age>   
  </UserInfo>  
 </UserInfos>

源代碼如下:

CMarkup xml;  
bool    flag;  
  
//加載Xml文件  
flag = xml.Load("d:\\UserInfos.xml");  
if (!flag)  
{  
    AfxMessageBox(TEXT("加載d:\\UserInfos.xml失敗,請檢查"));  
    return;  
}  
  
//定位到Root Elem  
xml.ResetPos();  
flag = xml.FindElem("UserInfos");  //Root Elem為<UserInfos></UserInfos>  
if (!flag)  
{  
    return;  
}  
  
xml.IntoElem();   //進入根節點  
while(xml.FindElem(TEXT("UserInfo")))  
{  
    xml.IntoElem();   //進入<UserInfo></UserInfo>  
  
    //獲取name節點數據  
    flag = xml.FindElem(TEXT("name"));  
    if (flag)  
    {  
        CString cstrName;  
        cstrName = xml.GetData();  
        AfxMessageBox(cstrName);  
    }  
  
    //獲取age節點數據  
    xml.ResetMainPos();   //保證不管name節點和age節點的順序如何,都能找到age節點  
    flag = xml.FindElem(TEXT("age"));  
    if (flag)  
    {  
        CString cstrAge;  
        cstrAge = xml.GetData();  
        AfxMessageBox(cstrAge);  
    }  
  
    xml.OutOfElem();  //跳出<UserInfo></UserInfo>  
}  
xml.OutOfElem();  //跳出根節點

當然實現同樣的功能也可以不進入UserInfo節點,源碼如下,請仔細對比

xml.IntoElem();   //進入根節點  
while(xml.FindElem(TEXT("UserInfo")))  
{  
    //獲取name子節點數據  
    flag = xml.FindChildElem(TEXT("name"));  
    if (flag)  
    {  
        CString cstrName;  
        cstrName = xml.GetChildData();  
        AfxMessageBox(cstrName);  
    }  
  
    //獲取age子節點數據  
    xml.ResetChildPos();   //保證不管name子節點和age子節點的順序如何,都能找到age子節點  
    flag = xml.FindChildElem(TEXT("age"));  
    if (flag)  
    {  
        CString cstrAge;  
        cstrAge = xml.GetChildData();  
        AfxMessageBox(cstrAge);  
    }  
}  
xml.OutOfElem();  //跳出根節點

Tips:

1.IntoElem與OutOfElem方法應成對使用

2.關于重置xml的Pos的函數

ResetPosResets the current position to the start of the document
ResetMainPosResets the current main position to before the first sibling
ResetChildPosResets the current child position to before the first child

3.SavePos 與 RestorePos 復原xml Pos

SavePosSaves the current position with an optional string name using a hash map
RestorePosGoes to the position saved with SavePos

比如:

...
xml.SavePos(Text("abc"));
OpXml(xml);  //該函數可能會改變xml的Pos,則可以利用SavePos與RestorePos復原該函數執行前xml的Pos
xml.RestorePos(Text("abc"));
...

感謝各位的閱讀!關于“CMarkup類操作Xml的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

xml
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女