코드/C++

[C++] XMLLite를 이용한 XML 파일 읽어오기

야곰야곰+책벌레 2021. 11. 8. 14:15
728x90
반응형

XML을 읽어오는 방법에는 여러 방법이 있다. 직접 코딩할 수도 있고, tinyXML 같은 오픈 api를 사용해도 된다.

여기서는 Visual Studio에서 제공하는 XMLLite를 이용하여 읽어 오도록 해보자.

 

우선 XML의 ELEMENT를 저장할 수 있는 구조체를 지정한 후

typedef struct XML_ATTRIBUTE_T
{
	wstring name;
	wstring value;
} XMLATTR;
typedef vector<XMLATTR> XMLATTRV;

typedef struct XML_ELEMENT_T
{
	wstring title;
	XMLATTRV attribute;

	bool bSubElement;
	bool bSeperator;
	vector<XML_ELEMENT_T> vElem;

	XML_ELEMENT_T() { bSubElement = false; bSeperator = false; }
} XMLELMT;
typedef vector<XMLELMT> XMLELMTV;

IXmlReader*를 이용하여 XML을 분석한다.

IXmlReader::Read()를 실행하면 매개변수로 nodeType을 구할 수 있는데, Node 특성에 따라 작업을 처리하면 된다.

  • XmlNodeType_XmlDeclaration : Attributes (prefix 정보, node의 이름, token 값 등)를 획득할 수 있다.
  • XmlNodeType_Element : Element의 속성을 획득할 수 있다.
  • XmlNodeType_EndElement : Element의 끝을 나타낸다.

주석이나 빈공란 등을 나타내는 것도 있지만 필요에 따라 찾아서 사용하면 될 듯한다.

샘플을 보관하는 목적이 강하기 때문에 더 자세한 설명은 찾아서 보도록 하자.

실행 결과
example.xml
0.00MB
xml_parser.zip
0.01MB

example.xml은 D:\에 두도록 하자. 

728x90
반응형

'코드 > C++' 카테고리의 다른 글

libjpeg 사용하기  (0) 2022.08.23
[C++] 마우스 이벤트 후킹  (0) 2022.05.11
[C++] string ↔ wstring 변환  (4) 2022.02.24
[C++] 3점을 지나는 외접원의 중심점 구하기  (0) 2021.04.20
[C++] Char의 형 변환  (0) 2021.04.20