Using TinyXML2 for XML Parsing in C++

I was searching for a easy,fast and small XML Parser for my project when I came across TinyXML2. I tried it and found that its indeed an easy and clean little parser which can cater to my need excellently.

Now lets see how it works.

Setting Up

You can get it from : https://github.com/leethomason/tinyxml2

Just download it and build the files using the solution available in the folder. Then you will get Object file(tinyxml.obj) in “tinyxml2-master\tinyxml2\Win32\Release” or “tinyxml2-master\tinyxml2\Win32\Debug” depends up on which configuration you built.

You will have to link the object file in your project settings or else you will get “Unresolved external symbol errors”.

Include “tinyxml2.h” in your C++ file.

Now we are ready to Tackle XMLs.

Load and Parse XML File

Create a XMLDocument Object and call LoadFile() function. Give the file path as its parameter.

XMLDocument xmlDoc;

xmlDoc.LoadFile(“kokkachi.xml”);

Parse XML formatted string

If you have a string which contains an XML, You can parse that using XMLDocument’s parse function.

XMLDocument dxml;

//Parse the xml sxml 
int rslt = dxml.Parse(sxml.c_str());

Getting root node

You can get the root node by calling FirstChild function of XMLDocument. It will return a pointer to the XMLNode class

XMLNode *rootnode = dxml.FirstChild();

Iterating Sibling Nodes

Then to iterate the nodes in the same level call NextSibling() function of XMLNode

XMLNode SiblingNode = rootnode ->NextSibling();

Getting Child Node

To get down to the child level nodes of current node call FirstChild() function of XMLNode

ChildNode = SiblingNode ->FirstChild();

Getting Data from Nodes

To get data from nodes we need to get the xml element from the Node. XMLNode class provides ToElement() function for this operation.

XMLElement *ChildElmt = ChildNode->ToElement();

Then we can get the Tag name of the Node using Name() function of XMLElement class.

string strTagName = ChildElmt ->Name();

We can get the values of the attributes of elements using the Attribute() function by giving the attribute name as parameter.

string strAttr = ChildElmt ->Attribute("YourAttributeName");

I am using tinyxml for some time now. And I must say I love its simplicity..

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s