天天看點

使用Boost.PropertyTree處理XML、JSON和INI資料

Boost.PropertyTree 應該是 Boost 1.41.0 開始正式加入 Boost 版本的。目前 ( 2010/02/28 ) 能下到的最新版本是 1.42.0。

主要作用/應用場合

Boost.PropertyTree 提供了一種結構化的資料存儲容器。并且提供了一系列的解釋器可以将記憶體中的結構與具體格式互相轉換 (比如: INI, XML, JSON )。

至少可以用在:

程序間通訊或者跨語言的程序間的通訊

一些配置檔案的存取

網絡通訊協定的格式

基本用法

基本用法有 2 種場景。第一種是從 Property Tree存儲到具體格式。第二種是從具體格式解析到具體的 Property Tree。其他還有一些 Property Tree 操作的方法,比如:周遊、搜尋等方法。

以下這個 Sample 就是基本用法的測試:

先把 資料存儲到 datum 中,随後輸出 相應的 XML 和 JSON 到 std::cout 上。最後再從 JSON Stream 中解析輸入到 ptParse 中獲得相應 的資料。

關于字元集

Boost 目前是支援 UTF8 的,但是不能用 直接用 Unicode。是以,如果要存儲寬字元就有點麻煩需要用到 Boost 提供的 utf8_codecvt_facet 做轉換。

下面就是一個存儲 wchar_t 的 Sample:

和之前的其實差不多,有 2 點主要不同。一是用了 wptree 替換了 ptree。二是增加了 utf8_codecvt_facet 在相應的 Stream 裡做轉換。

附錄

原文位址:http://notes.xj-labs.net/?p=52