1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
#include <boost/property_tree/xml_parser.hpp>
 
//...
 
namespace property_tree = boost::property_tree;
 
 
 
property_tree::ptree reader;
 
// 읽을 xml 파일을 설정합니다.(xml 파일경로, 엮을 객체)
property_tree::read_xml("config.xml", reader);
 
// num_sessions 데이터를 int형으로 읽어 옴
//
//<num_sessions>10</num_sessions>
int num_sessions = reader.get<int>("num_sessions");
 
 
//
// endpoint에 있는 port 데이터를 int형으로 읽어 옴
//
//<endpoint>
//  <ip_version>4</ip_version>
//  <port>6333</port>
//</endpoint>
//
int port = reader.get<int>("endpoint.port"); 
 

cs


boost::property_tree를 이용. ptree는 데이터가 저장되는 트리 구조의 객체이다. 


read_xml을 통해 파일을 열고, 바인딩된 객체의 get 메소드를 이용해 데이터를 뽑아오면 된다. 템플릿을 이용해 어떤 형태로 읽을지 결정도 가능하다.


1
2
3
4
 
reader.get<int>("name"// name 속성을 int형으로 읽음
reader.get<std::string>("name"// port 속성을 std::string형으로 읽음
 

cs


하부 노드에 접근을 할 때에는 객체의 멤버에 접근하듯, 점을 찍어가며 접근한다. 


endpoint 하위, port에 접근


1
2
3
 
unsigned short port_num = reader.get<unsigned short>("endpoint.port");
 

cs


xml 데이터 파싱 알아보다가 boost/property_tree 쓰면 편하게 되길래 간단하게 정리했음