일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- No SQL
- node.js
- 인공지능
- R
- Machine Learning
- 김양재 목사님
- 몽고디비
- nodeJS
- openCV
- data science
- 김양재 목사
- 빅 데이타
- 우리들교회
- probability
- Artificial Intelligence
- 주일설교
- Statistics
- 빅데이타
- WebGL
- 빅데이터
- MongoDB
- 확률
- 통계
- Big Data
- 데이터 과학
- 빅 데이터
- c++
- 김양재
- 딥러닝
- Deep learning
Archives
- Today
- Total
Scientific Computing & Data Science
[C/C++] MFC / XML Parsing Using Boost 본문
1. 헤더파일 추가
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <boost/foreach.hpp>
2. 네임스페이스 지정
using namespace boost;
using namespace boost::property_tree;
3. 전역함수 추가
const ptree& empty_ptree(){
static ptree t;
return t;
}
4. 변수 선언
ptree ptr;
CString myXMLFileName = _T("");
CString myXMLFilePath = _T("");
CString strAttr = _T("");
CString strAttrValue = _T("");
CString strTagName = _T("");
5. xml 파일명 지정
myXMLFileName = _T("PropertySettings.config");
6. XML 파일 경로 지정
myXMLFilePath = _T("D:\\Project\\Alpius\\branches\\alpius_xml_1.0.1\\Alpius\\Settings\\Configuration\\") + myXMLFileName;
7. XML 파일 스트림 읽기: read_xml 함수를 실행하여 XML 정보를 ptr에 저장함
read_xml( ConvertUnicode2String( myXMLFilePath ), ptr );
8. Attribute를 읽을 XML 태그 정의
const ptree & formats = ptr.get_child("alpius900.stage-setup.mode-config.dlg-hardware.group-im.group-motorLimit", empty_ptree());
9. BOOST_FOREACH MACRO를 실행하여 해당 XML 태그의 attribute를 읽는다. First는 attribute를 Second는 해당 attribute의 value이다.
BOOST_FOREACH(const ptree::value_type& f, formats){
string at = f.first + ATTR_SET;
strTagName = _T("");
strTagName = f.first.c_str();
AfxMessageBox(strTagName);
const ptree& attributes = f.second.get_child("<xmlattr>", empty_ptree());
BOOST_FOREACH(const ptree::value_type &v, attributes){
strAttr = _T("First : ");
strAttr += v.first.data();
strAttrValue = v.second.data().c_str();
AfxMessageBox(strAttr);
AfxMessageBox(_T("Second : ") + strAttrValue);
}
}
전체코드
ptree ptr;
CString myXMLFileName = _T("");
CString myXMLFilePath = _T("");
CString strAttr = _T("");
CString strAttrValue = _T("");
CString strTagName = _T("");
myXMLFileName = _T("PropertySettings.config");
myXMLFilePath = _T("D:\\Project\\Alpius\\branches\\alpius_xml_1.0.1\\Alpius\\Settings\\Configuration\\") + myXMLFileName;
read_xml( ConvertUnicode2String( myXMLFilePath ), ptr );
const ptree& formats = ptr.get_child("alpius900.stage-treatment.step-compare.dlg-main.group-operation", empty_ptree());
BOOST_FOREACH(const ptree::value_type& f, formats){
string at = f.first + ATTR_SET;
strTagName = _T("");
strTagName = f.first.c_str();
AfxMessageBox(strTagName);
const ptree& attributes = f.second.get_child("", empty_ptree());
BOOST_FOREACH(const ptree::value_type &v, attributes){
strAttr = _T("First : ");
strAttr += v.first.data();
strAttrValue = v.second.data().c_str();
AfxMessageBox(strAttr);
AfxMessageBox(_T("Second : ") + strAttrValue);
}
}
'Programming > C&C++' 카테고리의 다른 글
[C/C++] MFC / 시스템의 드라이브 문자 표시 (0) | 2015.01.02 |
---|---|
[C/C++] MFC / CFile의 UTF 문자를 파일에 쓰기 (1) | 2014.09.23 |
[C/C++] MFC / CString과 std::string 타입 변환 (0) | 2014.09.01 |
[C/C++] MFC / Edit Control Cursor (0) | 2014.08.19 |
[C/C++] MFC / CString의 한글/영문/숫자 구별하기 (1) | 2014.07.25 |
Comments