반응형
C/C++에서 json을 사용하려고 boost property_tree를 사용하다가 이 클래스가 xml파싱에도 거의 동일한 인터페이스로 사용할 수 있다는 것을 알게 되었습니다. 아래 예는 간단한 boost property_tree를 이용한 xml 파싱 예입니다. 참고로 소스 중 read_xml에서 iss(istringstream) 대신에 문자열을 넣으면 파일에서 읽게 됩니다.
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
using namespace boost::property_tree;
int main(int argc, char* argv[])
{
string data =
"<? xml version=\"1.0\" encoding=\"utf-8\"?>"
"<root>"
" <str>Hello</str>"
" <values>"
" <value>1</value>"
" <value test=\"A\">2</value>"
" <value>3</value>"
" </values>"
"</root>";
istringstream iss(data);
ptree pt;
read_xml(iss, pt);
auto str = pt.get<string>("root.str");
cout << str << endl;
auto childs = pt.get_child("root.values");
for (auto& child : childs)
{
cout << child.first << " : " << child.second.get_value<string>() << endl;
if (0 < child.second.size())
{
cout << child.second.get_child("<xmlattr>.test").get_value<string>() << endl;
}
}
return 0;
}
실행 결과는 아래와 같습니다.
Hello
value : 1
value : 2
A
value : 3
반응형
'개발 라이브러리 & 툴' 카테고리의 다른 글
boost locale을 이용한 C++에서의 Multi Byte와 UTF8간의 문자열 변환 (0) | 2021.11.19 |
---|---|
[MongoDB] Mongo C/C++ Driver 관련 자료 (0) | 2021.11.10 |
boost asio address from_string 사용시 주의할 점 (0) | 2021.10.25 |
C++ boost json용 라이브러리(boost.json) (0) | 2021.10.15 |
C++ boost json(property_tree) Hello World (0) | 2021.10.13 |
[MongoDB] 윈도우용 MongoDB C/C++ Driver 컴파일 및 인스톨 하기 (0) | 2021.10.07 |
C/C++ 병렬처리(멀티프로세스) 라이브러리 선택 (0) | 2021.10.03 |
비주얼스튜디오(Visual Studio) 시작 중에 비정상 종료될 때(Crash) 해결법 (0) | 2017.03.12 |