使用boost/property_tree進行XML操作


      之前一直用tinyxml來進行XML文件操作,剛剛接觸的一個測試項目是使用boost操作的,雖然不清楚這兩者的差異,但boost使用起來還挺方便的,所以簡單整理一些關於boost解析和創建XML文件的的操作方法,如果有錯誤歡迎指正。

      首先,簡單介紹一下怎么安裝boost_1_55_0,我是安裝在D盤上的。

      運行cmd.exe:

      C:\Users\Administrator>D:

      D:\>cd  D:boost_1_55_0

      D:\boost_1_55_0>bootstrap.bat

      ( 執行完會在boost_1_55_0下生成一個bjam.exe文件。)

      D:\boost_1_55_0>bjam.exe

      ( 此過程將默認根據系統安排好的編譯工具來編譯相應的lib文件和頭文件,時間會略久些。)

      當控制台出現 D:boost_1_55_0> 時,我們就完成了boost庫的安裝。

     

      其次,關於屬性配置:

      VC++目錄 -> 包含目錄 -> D:\boost_1_55_0

                         庫目錄 -> D:\boost_1_55_0\stage\lib

      C++ -> 常規 -> 附加包含目錄 -> D:\boost_1_55_0

      連接器 -> 常規 -> 附加庫目錄 -> D:\boost_1_55_0\stage\lib

               -> 輸入-> 附加依賴項 -> libboost_signals-vc120-mt-gd-1_55.lib

                                                 libboost_regex-vc120-mt-gd-1_55.lib

 

      下面通過一個小demo來具體操作:將下面這個名為MyXML.xml的文件內容解析出來,並將解析結果自動的重新寫回到另外一個名為AutoCreateXML.xml的文件中。

      

 

      配置屬性 -> 調試 -> 命令參數 -> MyXML.xml

      接下來開始編寫代碼。

      這個程序已經編譯通過並得到預期結果。下面關於程序做幾點說明:

      1).boost::property_tree::xml_writer_settings<char>settings('\t', 1);

          boost::property_tree::xml_parser::write_xml(xmlOutputString, datum, std::locale(), settings);

          通過settings使輸出格式更加規范化,注意xmlOutputString必須為string型。

       2).與tinyxml不同,ptree是先定義子節點信息,最后添加父節點。

       3).xml文件中的文字部分若加雙引號,則解析出來會添加一個&quoc的符號,具體原因我也不清楚,在實際應用時注意盡量避免文字部分加雙引號就好了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM