• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            笑看風云淡

            寵辱不驚,看庭前花開花落;去留無意,望天空云卷云舒
            posts - 96, comments - 48, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

            在VC中用CMarkup類操縱XML

            Posted on 2008-10-10 17:29 天之驕子 閱讀(13933) 評論(2)  編輯 收藏 引用
                  首先到http://www.firstobject.com/dn_markup.htm上面下載CMarkup類,將CMarkup.cpp和CMarkup.h導入到我們的工程中就可以了。編譯可能會出現問題,解決的方法是在CMarkup.cpp的開頭加上#include <stdafx.h>,或者關閉預編譯也可以。

            1、創建一個XML文檔

            對于創建一個XML文檔,需要實例化一個CMarkup對象,并調用AddElem創建根元素。在這個位置,如果你調用 AddElem("School") ,文檔會簡單的裝一個空元素<School/>. 然后調用AddChildElem 在根元素的下面創建元素。

             1     CMarkup xml;
             2     xml.SetDoc("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
             3     xml.AddElem("School");
             4     xml.IntoElem();
             5     xml.AddElem("Department","Automation");
             6     xml.AddElem("Department","Computer");
             7     xml.AddElem("Department","Math");
             8     xml.AddElem("Department","English");
             9     xml.OutOfElem();
            10     xml.Save("School.xml");


            效果如下:

             

            1<?xml version="1.0" encoding="UTF-8"?>
            2<School>
            3    <Department>Automation</Department>
            4    <Department>Computer</Department>
            5    <Department>Math</Department>
            6    <Department>English</Department>
            7</School>
            8


            2、瀏覽特定元素

             1     CMarkup xml;
             2     xml.Load("School.xml");
             3     BOOL bFind=TRUE;
             4     xml.ResetMainPos();
             5     
             6     while(xml.FindChildElem("Department"))
             7     {
             8         CString strTagName=_T("");
             9         CString strData=_T("");
            10         strTagName=xml.GetChildTagName();    //此時節點是父節點
            11         strData=xml.GetChildData();
            12         TRACE("\n---tagName:%s,Data:%s--\n",strTagName,strData);
            13     }


            //***********************這樣也可以*****************************/

             1     CMarkup xml;
             2     xml.Load("School.xml");
             3     BOOL bFind = TRUE;
             4     xml.ResetMainPos();
             5     
             6     while (xml.FindChildElem("Department"))        
             7     {
             8         xml.IntoElem();
             9         CString strTagName = _T("");
            10         CString strData = _T("");
            11         strTagName = xml.GetTagName();
            12         strData = xml.GetData();
            13         TRACE("\n---tagName:%s,Data:%s--\n",strTagName,strData);
            14         xml.OutOfElem();
            15     }


            //***********************或者這樣也可以***************************/

             1     CMarkup xml;
             2     xml.Load("School.xml");
             3     BOOL bFind = TRUE;
             4     xml.ResetMainPos();
             5     xml.FindElem();  //School
             6     xml.IntoElem();
             7     
             8     while (xml.FindElem("Department"))
             9     {
            10         CString strTagName = _T("");
            11         CString strData = _T("");
            12         strTagName = xml.GetTagName();
            13         strData = xml.GetData();
            14         TRACE("\n---tagName:%s,Data:%s--\n",strTagName,strData);
            15     }


            //***********結果**************
                  ---tagName:Department,Data:Automation--

            ---tagName:Department,Data:Computer--

            ---tagName:Department,Data:Math--

            ---tagName:Department,Data:English--

            3、修改元素
            //把Department為”English“改為”Chinese“

             1     CMarkup xml;
             2     BOOL bLoadXml=FALSE;
             3     bLoadXml=xml.Load("School.xml");
             4 
             5     if(bLoadXml)
             6     {
             7         CString str=_T("");
             8         xml.ResetMainPos();
             9         xml.FindElem();
            10         xml.IntoElem();
            11         while(xml.FindElem("Department"))
            12         {
            13             str=xml.GetData();
            14             if(str=="English")
            15             {
            16                 xml.SetData("Chinese");
            17                 xml.Save("School.xml");
            18                 break;
            19             }
            20         }
            21     }


            效果如下:

            1<?xml version="1.0" encoding="UTF-8"?>
            2<School>
            3    <Department>Automation</Department>
            4    <Department>Computer</Department>
            5    <Department>Math</Department>
            6    <Department>Chinese</Department>
            7</School>
            8


            4、添加
            4、1 添加在最后面(用AddElem)

             1     CMarkup xml;
             2     BOOL bLoadXml=FALSE;
             3     bLoadXml=xml.Load("School.xml");
             4     if(bLoadXml)
             5     {
             6         xml.ResetMainPos();
             7         xml.FindElem();
             8         xml.IntoElem();
             9         xml.AddElem("Department","SiQinghua");
            10         xml.OutOfElem();
            11         xml.Save("School.xml");
            12     }


            效果如下:

            1<?xml version="1.0" encoding="UTF-8"?>
            2<School>
            3    <Department>Automation</Department>
            4    <Department>Computer</Department>
            5    <Department>Math</Department>
            6    <Department>Chinese</Department>
            7    <Department>SiQinghua</Department>
            8</School>


            4、2 添加在最前面(用InsertElem)

             1     CMarkup xml;
             2     BOOL bLoadXml=FALSE;
             3     bLoadXml=xml.Load("School.xml");
             4     if(bLoadXml)
             5     {
             6         xml.ResetMainPos();
             7         xml.FindElem();
             8         xml.IntoElem();
             9         xml.AddElem("Department","SiQinghua");
            10         xml.OutOfElem();
            11         xml.Save("School.xml");
            12     }


            效果如下:

             1<?xml version="1.0" encoding="UTF-8"?>
             2<School>
             3    <Department>NARI</Department>
             4    <Department>Automation</Department>
             5    <Department>Computer</Department>
             6    <Department>Math</Department>
             7    <Department>Chinese</Department>
             8    <Department>SiQinghua</Department>
             9</School>
            10


            5、刪除

             1     CMarkup xml;
             2     BOOL bLoadXml=FALSE;
             3     bLoadXml=xml.Load("School.xml");
             4     if(bLoadXml)
             5     {
             6         BOOL bFind=TRUE;
             7         xml.ResetMainPos();
             8         while(bFind)
             9         {
            10             bFind=xml.FindChildElem("Department");
            11             if(bFind)
            12             {
            13                 CString strData=_T("");
            14                 strData=xml.GetChildData();    //此時節點還是父節點
            15                 if("SiQinghua"==strData)
            16                 {
            17                     xml.RemoveChildElem();
            18                     xml.Save("School.xml");
            19                     break;
            20                 }
            21             }
            22         }
            23     }


            效果如下:

            1 <?xml version="1.0" encoding="UTF-8"?>
            2 <School>
            3     <Department>NARI</Department>
            4     <Department>Automation</Department>
            5     <Department>Computer</Department>
            6     <Department>Math</Department>
            7     <Department>Chinese</Department>
            8 </School>
            9 



            上面的例子都是不帶屬性的,下面舉一個帶有屬性的例子。
            1、生成XML文檔

             1     CMarkup xml;
             2     xml.SetDoc("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
             3     xml.AddElem("UserInfo");
             4     xml.IntoElem();
             5     for(int i=0;i<10;i++)
             6     {
             7         CString strID=_T("");
             8         CString strPwd=_T("");
             9 
            10         srand(UINT(time(NULL)+i)); //產生一個隨機數
            11         int nLevel=rand()%256;
            12 
            13         strID.Format("UserID%02d",i);
            14         strPwd.Format("UserPwd%02d",i);
            15 
            16         xml.AddElem("User");
            17         xml.AddAttrib("UserID",strID);
            18         xml.AddAttrib("UserPwd",strPwd);
            19         xml.AddAttrib("UserLevel",nLevel);
            20     }
            21     xml.OutOfElem();
            22     xml.Save("UserInfo.xml");


            效果如下:

             1<?xml version="1.0" encoding="UTF-8"?>
             2<UserInfo>
             3    <User UserID="UserID00" UserPwd="UserPwd00" UserLevel="85"/>
             4    <User UserID="UserID01" UserPwd="UserPwd01" UserLevel="88"/>
             5    <User UserID="UserID02" UserPwd="UserPwd02" UserLevel="92"/>
             6    <User UserID="UserID03" UserPwd="UserPwd03" UserLevel="95"/>
             7    <User UserID="UserID04" UserPwd="UserPwd04" UserLevel="98"/>
             8    <User UserID="UserID05" UserPwd="UserPwd05" UserLevel="101"/>
             9    <User UserID="UserID06" UserPwd="UserPwd06" UserLevel="105"/>
            10    <User UserID="UserID07" UserPwd="UserPwd07" UserLevel="108"/>
            11    <User UserID="UserID08" UserPwd="UserPwd08" UserLevel="111"/>
            12    <User UserID="UserID09" UserPwd="UserPwd09" UserLevel="115"/>
            13</UserInfo>
            14


            2、查找特定屬性

             1     CMarkup xml;
             2     BOOL bLoadXml=FALSE;
             3     BOOL bFind=FALSE;
             4     bLoadXml=xml.Load("UserInfo.xml");
             5     if(bLoadXml)
             6     {
             7         CString strID;
             8         CString strPwd;
             9         xml.ResetMainPos();
            10         xml.FindElem();    //UserInfo
            11         while(xml.FindChildElem("User"))
            12         {
            13             strID=xml.GetChildAttrib("UserID");
            14             strPwd=xml.GetChildAttrib("UserPwd");
            15             TRACE("\n---id:%s,pwd:%s---\n",strID,strPwd);
            16             if(strID=="UserID02" && strPwd=="UserPwd02")
            17             {
            18                 bFind=TRUE;
            19                 break;
            20             }
            21         }
            22     }
            23     if(bFind==TRUE)
            24         TRACE("\n---find---\n");
            25     else
            26         TRACE("\n---not find---\n");


            3、修改特定屬性

             1     CMarkup xml;
             2     BOOL bFind=FALSE;
             3     BOOL bLoadXml=FALSE;
             4     bLoadXml=xml.Load("UserInfo.xml");
             5     if(bLoadXml)
             6     {
             7         CString strID;
             8         CString strPwd;
             9         xml.ResetMainPos();
            10         xml.FindElem();    //UserInfo
            11         while(xml.FindChildElem("User"))
            12         {
            13             strID=xml.GetChildAttrib("UserID");
            14             strPwd=xml.GetChildAttrib("UserPwd");
            15             TRACE("\n--id:%s,pwd:%s--\n",strID,strPwd);
            16             if(strID=="UserID02" && strPwd=="UserPwd02")
            17             {
            18                 bFind=TRUE;
            19                 xml.SetChildAttrib("UserID",strID+CString("Modified"));
            20                 xml.Save("UserInfo.xml");
            21                 break;
            22             }
            23         }
            24     }
            25     if(bFind==TRUE)
            26         TRACE("\n---find---\n");
            27     else
            28         TRACE("\n---not find---\n");


            效果如下:

             1<?xml version="1.0" encoding="UTF-8"?>
             2<UserInfo>
             3    <User UserID="UserID00" UserPwd="UserPwd00" UserLevel="85"/>
             4    <User UserID="UserID01" UserPwd="UserPwd01" UserLevel="88"/>
             5    <User UserID="UserID02Modified" UserPwd="UserPwd02" UserLevel="92"/>
             6    <User UserID="UserID03" UserPwd="UserPwd03" UserLevel="95"/>
             7    <User UserID="UserID04" UserPwd="UserPwd04" UserLevel="98"/>
             8    <User UserID="UserID05" UserPwd="UserPwd05" UserLevel="101"/>
             9    <User UserID="UserID06" UserPwd="UserPwd06" UserLevel="105"/>
            10    <User UserID="UserID07" UserPwd="UserPwd07" UserLevel="108"/>
            11    <User UserID="UserID08" UserPwd="UserPwd08" UserLevel="111"/>
            12    <User UserID="UserID09" UserPwd="UserPwd09" UserLevel="115"/>
            13</UserInfo>


             

            Feedback

            # re: 在VC中用CMarkup類操縱XML  回復  更多評論   

            2009-07-27 17:59 by kukuma
            <?xml version="1.0" encoding="UTF-8"?>
            <UserInfo>
            <100>nokia<100/>
            </UserInfo>


            <100>nokia<100/> 這樣的寫法不支持

            # re: 在VC中用CMarkup類操縱XML  回復  更多評論   

            2009-07-27 18:00 by kukuma
            <100>nokia</100>
            色狠狠久久综合网| 久久久91精品国产一区二区三区 | 久久国产精品一区| 婷婷久久综合九色综合九七| 久久国产香蕉视频| 久久久亚洲欧洲日产国码aⅴ| 久久99国产精品久久久| 久久狠狠一本精品综合网| 国产成人精品综合久久久久| 久久久久久久97| 国产精品99久久久精品无码| 久久久久人妻精品一区| 欧美久久亚洲精品| 99久久精品日本一区二区免费| 人人妻久久人人澡人人爽人人精品| 国内精品久久久久| 国产精品99久久久久久宅男小说| 国产99久久久国产精免费| 伊人久久五月天| 国产成人久久精品麻豆一区| 色8久久人人97超碰香蕉987| 久久人妻少妇嫩草AV无码蜜桃| 99久久免费国产精品| 亚洲AV无码久久精品狠狠爱浪潮| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区| 欧美伊人久久大香线蕉综合| 精品人妻伦九区久久AAA片69 | 热RE99久久精品国产66热| 99国产精品久久久久久久成人热| 久久久久久精品久久久久| 欧美大战日韩91综合一区婷婷久久青草| 久久久久国产精品熟女影院| 香蕉久久夜色精品国产尤物| 狠狠综合久久综合中文88| 99久久精品免费看国产| 97精品伊人久久久大香线蕉| 久久天天躁狠狠躁夜夜96流白浆| 久久天天躁狠狠躁夜夜网站| 久久丫精品国产亚洲av不卡| 精品熟女少妇AV免费久久| 亚洲女久久久噜噜噜熟女|