• <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 天之驕子 閱讀(13919) 評論(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超碰碰碰碰久久久久久综合| 国产亚洲精午夜久久久久久 | 99精品国产99久久久久久97 | 久久久女人与动物群交毛片| 久久亚洲AV成人无码软件| 欧美亚洲日本久久精品| 亚洲婷婷国产精品电影人久久| 久久久精品波多野结衣| 精品多毛少妇人妻AV免费久久| 国产毛片久久久久久国产毛片| 国产国产成人久久精品| 久久久久99精品成人片三人毛片 | 7777精品伊人久久久大香线蕉| 色婷婷综合久久久久中文字幕| 国产精品久久久久久久app| 久久精品人妻中文系列| 国产婷婷成人久久Av免费高清| 夜夜亚洲天天久久| 青青草国产97免久久费观看| 亚洲色婷婷综合久久| 91久久精一区二区三区大全| 精品熟女少妇aⅴ免费久久| 超级97碰碰碰碰久久久久最新| 乱亲女H秽乱长久久久| 精品久久久久久国产免费了| 久久精品国产男包| 日本免费一区二区久久人人澡| 伊人久久无码精品中文字幕| 国产精品无码久久综合| 少妇被又大又粗又爽毛片久久黑人| 欧美精品国产综合久久| 国产91色综合久久免费分享| 国产ww久久久久久久久久| 久久精品国产精品亚洲下载| 久久久久久精品成人免费图片| 国内精品久久久久久99蜜桃| 四虎国产精品免费久久5151| 久久综合久久性久99毛片| 嫩草伊人久久精品少妇AV| 久久久WWW成人| 国产精品久久久久久福利69堂|