2008/11/27
작고 빠르고 편한 Open Source XML Parser - RapidXML
XML 데이터를 분석해야 할 일이 있어서 공개 소스로 이루어진 프로젝트를 찾아 보았다.
TinyXML 과 RapidXML 을 찾았는데 둘 중 가볍고 사용하기 편한 RapidXML 을 사용하기로 하였다.
RapidXML 소스를 받으면 4개의 소스 파일로만 이루어 졌다.
rapidxml.hpp
rapidxml_iterators.hpp
rapidxml_print.hpp
rapidxml_utils.hpp
rapidxml_print 는 XML을 출력하는 기능이 포함되어 있고. rapidxml_utils 은 XML 데이터 파일을 읽어들이는 기능을 한다.
기본적인 XML 데이터 탐색을 하기위해서는 rapidxml.hpp 만 포함시키면 된다.
기본적인 사용법은 아래의 소스를 보면 한눈에 알 수 있다.
RapidXML 홈페이지
TinyXML 홈페이지
Original Post : http://neodreamer-dev.tistory.com/204
TinyXML 과 RapidXML 을 찾았는데 둘 중 가볍고 사용하기 편한 RapidXML 을 사용하기로 하였다.
RapidXML 소스를 받으면 4개의 소스 파일로만 이루어 졌다.
rapidxml.hpp
rapidxml_iterators.hpp
rapidxml_print.hpp
rapidxml_utils.hpp
rapidxml_print 는 XML을 출력하는 기능이 포함되어 있고. rapidxml_utils 은 XML 데이터 파일을 읽어들이는 기능을 한다.
기본적인 XML 데이터 탐색을 하기위해서는 rapidxml.hpp 만 포함시키면 된다.
기본적인 사용법은 아래의 소스를 보면 한눈에 알 수 있다.
#include "rapidxml.hpp"
#include "rapidxml_utils.hpp"
using namespace rapidxml;
// XML 문서 데이터를 저장할 변수
vector< TCHAR > xmlData;
// XML 파일 불러오기
basic_ifstream<TCHAR> xmlFile( strFile );
xmlFile.seekg(0, ios::end);
size_t size = xmlFile.tellg();
xmlFile.seekg(0);
xmlData.clear();
xmlData.resize( size + 1);
xmlData[size] = 0;
xmlFile.read( &xmlData.front(), (streamsize)size );
// XML Parsing
xml_document< TCHAR > xmlDoc;
xmlDoc.parse<0>( &xmlData.front() );
TCHAR* Name;
TCHAR* Value;
xml_node< TCHAR >* Item;
xml_node< TCHAR >* SubItem;
xml_attribute< TCHAR >* Attr;
// root 포인터
xml_node< TCHAR >* root = xmlDoc.first_node();
// root 하위 Node 탐색
for ( Item = root->first_node(); Item; Item = root->next_sibling())
{
// Node 이름
Name = Item->name();
// Node 의 Attribute 탐색
for ( Attr = Item->first_attribute(); Attr;
Attr = Attr->next_attribute() )
{
Name = Attr->name(); // Attribute 의 이름
Value = Attr->value(); // Attribute 의 값
}
for ( SubItem = Item->first_node(); SubItem;
SubItem = SubItem->next_sibling() )
{
Name = Attr->name(); // Sub node 의 이름
}
}
RapidXML 홈페이지
TinyXML 홈페이지
Original Post : http://neodreamer-dev.tistory.com/204
Labels:
C++
,
OpenSource
,
STL
,
TistoryOldPost
,
XML
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment