• <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>
            萬(wàn)星星@豌豆莢 歡迎加入我們
            一個(gè)吃軟飯的男人!!!!!我只想寫程序####
            微博:http://weibo.com/wanlianwen
            posts - 172,  comments - 1253,  trackbacks - 0

            本命年沒(méi)穿紅內(nèi)褲,大年初一被狗咬,慘,所以大家本命年切記要穿,否則會(huì)倒霉的!!!

            去年年底寫一個(gè)配置文件(XML格式),第一次直接用MSXML,勉強(qiáng)實(shí)現(xiàn),代碼冗余且雜亂,剛寫好,需求變了些,代碼很難維護(hù),所以自己寫了一個(gè)封裝類,接口層都是STL類,用起來(lái)比較方便,這樣可以剩了類型轉(zhuǎn)換的麻煩,適合不熟悉COM的程序員。只封裝了部分功能,但是XML基本操作都可以實(shí)現(xiàn)。

            目的:為了更方便的讀寫XML文檔,對(duì)MSXML4.0類進(jìn)行封裝
                        主要解決一些接口參數(shù)轉(zhuǎn)換問(wèn)題
                        使用前確保已經(jīng)安裝好MSXML4.0且設(shè)置好環(huán)境
                        適合VC開(kāi)發(fā)語(yǔ)言

            下面是類:

            class WLWXML
            {
            public:
             WLWXML()
             {
              m_pIXMLDoc = NULL;
             }
             ~WLWXML()
             {
              SafeReleaseXMLDoc();
             }

             // 創(chuàng)建一個(gè)XML文檔,成功返回true,失敗返回false
             bool ConstructXMLFile();

             // 從文件加載一個(gè)XML文件,加載成功返回true,加載失敗返回false
             bool LoadFromXMLFile(const std::string& fileName);

             // 保存XML文件到fileName,成功返回true,失敗返回false
             bool SaveToXMLFile(const std::string& fileName);

             // 安全釋放XML文檔
             void SafeReleaseXMLDoc();

             // 獲得XML文件內(nèi)容
             void GetXML(std::string& strXML);

             // 在文檔pIParentElem元素下添加nodeName節(jié)點(diǎn),值為nodeValue
             bool AppendMemberNode( const std::string& nodeName,
                    const std::string& nodeValue,
                    IXMLDOMElement*    pIParentElem,
                    IXMLDOMNode**    ppOutNewChild=NULL);
             bool AppendMemberNode( const std::string& nodeName,
                    int       nodeValue,
                    IXMLDOMElement*    pIParentElem,
                    IXMLDOMNode**    ppOutNewChild=NULL);
             bool AppendMemberNode( const std::string& nodeName,
                    long      nodeValue,
                    IXMLDOMElement*    pIParentElem,
                    IXMLDOMNode**    ppOutNewChild=NULL);
             bool AppendMemberNode( const std::string& nodeName,
                    double      nodeValue,
                    IXMLDOMElement*    pIParentElem,
                    IXMLDOMNode**    ppOutNewChild=NULL);
             bool AppendMemberNode( const std::string& nodeName,
                    bool      nodeValue,
                    IXMLDOMElement*    pIParentElem,
                    IXMLDOMNode**    ppOutNewChild=NULL);

             // 為元素pIParentElem添加屬性
             bool AppendAttributeNode(const std::string& nodeName,
                    const std::string& nodeValue,
                    IXMLDOMElement*  pIParentElem);
             bool AppendAttributeNode(const std::string& nodeName,
                    int     nodeValue,
                    IXMLDOMElement*  pIParentElem);
             bool AppendAttributeNode(const std::string& nodeName,
                    long    nodeValue,
                    IXMLDOMElement*  pIParentElem);
             bool AppendAttributeNode(const std::string& nodeName,
                    double    nodeValue,
                    IXMLDOMElement*  pIParentElem);
             bool AppendAttributeNode(const std::string& nodeName,
                    bool    nodeValue,
                    IXMLDOMElement*  pIParentElem);

             // 獲取pIParentElem元素下nodeName節(jié)點(diǎn)的值
             bool GetNodeValue( IXMLDOMNode*  pIParentElem,
                   const std::string& nodeName,
                   std::string&  nodeValue);
             bool GetNodeValue( IXMLDOMNode*  pIParentElem,
                   const std::string& nodeName,
                   int&    nodeValue);
             bool GetNodeValue( IXMLDOMNode*  pIParentElem,
                   const std::string& nodeName,
                   long&    nodeValue);
             bool GetNodeValue( IXMLDOMNode*  pIParentElem,
                   const std::string& nodeName,
                   double&    nodeValue);
             bool GetNodeValue( IXMLDOMNode*  pIParentElem,
                   const std::string& nodeName,
                   bool&    nodeValue);

             // 獲得節(jié)點(diǎn)pIParentElem的屬性
             bool GetAttributeNode(IXMLDOMNode*  pIParentElem,
                    const std::string& nodeName,
                    std::string&  nodeValue);
             bool GetAttributeNode(IXMLDOMNode*  pIParentElem,
                    const std::string& nodeName,
                    int&    nodeValue);
             bool GetAttributeNode(IXMLDOMNode*  pIParentElem,
                    const std::string& nodeName,
                    long&    nodeValue);
             bool GetAttributeNode(IXMLDOMNode*  pIParentElem,
                    const std::string& nodeName,
                    double&   nodeValue);
             bool GetAttributeNode(IXMLDOMNode*  pIParentElem,
                    const std::string& nodeName,
                    bool&    nodeValue);

             // 獲得文檔元素
             IXMLDOMElement* GetDocElem();
             
             // 獲得節(jié)點(diǎn)的nodeName孩子
             IXMLDOMNode* GetChildNode(IXMLDOMNode*  pIParentElem,
                     const std::string& nodeName,
                     std::string&  nodeValue);
            protected:
            private:
             IXMLDOMDocument2*    m_pIXMLDoc;  // XML文檔

            };


            類以及示例下載

            posted on 2006-02-10 19:38 萬(wàn)連文 閱讀(3138) 評(píng)論(5)  編輯 收藏 引用 所屬分類: 亂七八糟

            FeedBack:
            # re: 狗年第一篇-MSXML類封裝
            2006-04-28 00:05 | weed
            謝謝!正煩得很呢。。。用慣了c#讀寫xml,這個(gè)com太不爽了。  回復(fù)  更多評(píng)論
              
            # re: 狗年第一篇-MSXML類封裝
            2007-12-10 17:29 | dfdfds
            vknbvcbmvcbvc
            nvcbnbvnvc
            n\cv
            n  回復(fù)  更多評(píng)論
              
            # re: 狗年第一篇-MSXML類封裝
            2008-09-10 19:17 | Hyper
            你說(shuō)的設(shè)置好環(huán)境,怎么設(shè)置啊.初學(xué)者請(qǐng)教了  回復(fù)  更多評(píng)論
              
            # re: 狗年第一篇-MSXML類封裝
            2008-09-10 19:32 | 萬(wàn)星星
            就是包含msxml的頭文件以及l(fā)ib啊,如果是vs2005似乎已經(jīng)包含了,vc6默認(rèn)是沒(méi)有。  回復(fù)  更多評(píng)論
              
            # re: 狗年第一篇-MSXML類封裝
            2008-09-11 15:15 | Hyper
            這個(gè)lib怎么添加啊。謝謝啊,才上大一好多都不懂  回復(fù)  更多評(píng)論
              
            簡(jiǎn)歷下載
            聯(lián)系我

            <2006年2月>
            2930311234
            567891011
            12131415161718
            19202122232425
            2627281234
            567891011

            常用鏈接

            留言簿(66)

            隨筆分類

            隨筆檔案

            相冊(cè)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久久噜噜噜久久| 91久久精品国产成人久久| 久久黄色视频| 欧美日韩精品久久久久| 99久久成人国产精品免费| 亚洲欧美一级久久精品| 久久精品国产91久久麻豆自制| 香蕉99久久国产综合精品宅男自| 国内精品伊人久久久久av一坑| 色综合久久88色综合天天 | 麻豆久久久9性大片| 日本亚洲色大成网站WWW久久| 国产69精品久久久久APP下载| 色婷婷综合久久久中文字幕| 一本色道久久99一综合| 久久亚洲精品无码aⅴ大香| A狠狠久久蜜臀婷色中文网| 久久成人18免费网站| 国产综合精品久久亚洲| 一本一本久久a久久综合精品蜜桃| 国产69精品久久久久777| 久久亚洲精品国产精品婷婷| 久久青草国产精品一区| 亚洲精品高清国产一久久| 欧美精品九九99久久在观看| 99热成人精品免费久久| 国产伊人久久| 久久精品中文字幕久久| 国产精品久久午夜夜伦鲁鲁| 久久婷婷五月综合97色直播| 亚洲精品无码久久久久| 亚洲日本va中文字幕久久| 亚洲国产成人精品91久久久| 品成人欧美大片久久国产欧美...| 国内精品久久久久影院优| 精品无码久久久久国产动漫3d| 日韩久久久久中文字幕人妻| 久久亚洲精品无码播放| 久久久精品久久久久特色影视 | 色婷婷狠狠久久综合五月| 国内精品欧美久久精品|