<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>TinyXml: Main Page</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindexHL" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a></div>
<h1>TinyXml Documentation</h1>
<p>
<h3 align="center">2.4.0 </h3><h1>TinyXml </h1>
<p>
TinyXml is a simple, small, C++ XML parser that can be easily integrating into other programs.<p>
<h2>What it does. </h2>
<p>
In brief, TinyXml parses an XML document, and builds from that a Document Object Model (DOM) that can be read, modified, and saved.<p>
XML stands for "eXtensible Markup Language." It allows you to create your own document markups. Where HTML does a very good job of marking documents for browsers, XML allows you to define any kind of document markup, for example a document that describes a "to do" list for an organizer application. XML is a very structured and convenient format. All those random file formats created to store application data can all be replaced with XML. One parser for everything.<p>
The best place for the complete, correct, and quite frankly hard to read spec is at <a href="http://www.w3.org/TR/2004/REC-xml-20040204/">http://www.w3.org/TR/2004/REC-xml-20040204/</a>. An intro to XML (that I really like) can be found at <a href="http://skew.org/xml/tutorial/">http://skew.org/xml/tutorial</a>.<p>
There are different ways to access and interact with XML data. TinyXml uses a Document Object Model (DOM), meaning the XML data is parsed into a C++ objects that can be browsed and manipulated, and then written to disk or another output stream. You can also construct an XML document from scratch with C++ objects and write this to disk or another output stream.<p>
TinyXml is designed to be easy and fast to learn. It is two headers and four cpp files. Simply add these to your project and off you go. There is an example file - xmltest.cpp - to get you started.<p>
TinyXml is released under the ZLib license, so you can use it in open source or commercial code. The details of the license are at the top of every source file.<p>
TinyXml attempts to be a flexible parser, but with truly correct and compliant XML output. TinyXml should compile on any reasonably C++ compliant system. It does not rely on exceptions or RTTI. It can be compiled with or without STL support. TinyXml fully supports the UTF-8 encoding, and the first 64k character entities.<p>
<h2>What it doesn't do. </h2>
<p>
It doesnt parse or use DTDs (Document Type Definitions) or XSLs (eXtensible Stylesheet Language.) There are other parsers out there (check out www.sourceforge.org, search for XML) that are much more fully featured. But they are also much bigger, take longer to set up in your project, have a higher learning curve, and often have a more restrictive license. If you are working with browsers or have more complete XML needs, TinyXml is not the parser for you.<p>
The following DTD syntax will not parse at this time in TinyXml:<p>
<div class="fragment"><pre class="fragment">	&lt;!DOCTYPE Archiv [
	 &lt;!ELEMENT Comment (#PCDATA)&gt;
	]&gt;
</pre></div><p>
because TinyXml sees this as a !DOCTYPE node with an illegally embedded !ELEMENT node. This may be addressed in the future.<p>
<h2>Tutorials. </h2>
<p>
For the impatient, here is a tutorial to get you going. A great way to get started, but it is worth your time to read this (very short) manual completely.<p>
<ul>
<li><a class="el" href="tutorial0.html">TinyXML Tutorial</a></li></ul>
<p>
<h2>Code Status. </h2>
<p>
TinyXml is mature, tested code. It is very stable. If you find bugs, please file a bug report on the sourceforge web site (www.sourceforge.net/projects/tinyxml). We'll get them straightened out as soon as possible.<p>
There are some areas of improvement; please check sourceforge if you are interested in working on TinyXml.<p>
<h2>Features </h2>
<p>
<h3>Using STL </h3>
<p>
TinyXml can be compiled to use or not use STL. When using STL, TinyXml uses the std::string class, and fully supports std::istream, std::ostream, operator&lt;&lt;, and operator&gt;&gt;. Many API methods have both 'const char*' and 'const std::string&amp;' forms.<p>
When STL support is compiled out, no STL files are included whatsover. All the string classes are implemented by TinyXml itself. API methods all use the 'const char*' form for input.<p>
Use the compile time define:<p>
TIXML_USE_STL<p>
to compile one version or the other. This can be passed by the compiler, or set as the first line of "tinyxml.h".<p>
Note: If compiling the test code in Linux, setting the environment variable TINYXML_USE_STL=YES/NO will control STL compilation. In the Windows project file, STL and non STL targets are provided. In your project, its probably easiest to add the line "#define TIXML_USE_STL" as the first line of <a class="el" href="tinyxml_8h-source.html">tinyxml.h</a>.<p>
<h3>UTF-8 </h3>
<p>
TinyXml supports UTF-8 allowing to manipulate XML files in any language. TinyXml also supports "legacy mode" - the encoding used before UTF-8 support and probably best described as "extended ascii".<p>
Normally, TinyXml will try to detect the correct encoding and use it. However, by setting the value of TIXML_DEFAULT_ENCODING in the header file, TinyXml can be forced to always use one encoding.<p>
TinyXml will assume Legacy Mode until one of the following occurs: <ol>
<li>
If the non-standard but common "UTF-8 lead bytes" (0xef 0xbb 0xbf) begin the file or data stream, TinyXml will read it as UTF-8.  </li>
<li>
If the declaration tag is read, and it has an encoding="UTF-8", then TinyXml will read it as UTF-8.  </li>
<li>
If the declaration tag is read, and it has no encoding specified, then TinyXml will read it as UTF-8.  </li>
<li>
If the declaration tag is read, and it has an encoding="something else", then TinyXml will read it as Legacy Mode. In legacy mode, TinyXml will work as it did before. It's not clear what that mode does exactly, but old content should keep working. </li>
<li>
Until one of the above criteria is met, TinyXml runs in Legacy Mode. </li>
</ol>
<p>
What happens if the encoding is incorrectly set or detected? TinyXml will try to read and pass through text seen as improperly encoded. You may get some strange results or mangled characters. You may want to force TinyXml to the correct mode.<p>
<b> You may force TinyXml to Legacy Mode by using LoadFile( TIXML_ENCODING_LEGACY ) or LoadFile( filename, TIXML_ENCODING_LEGACY ). You may force it to use legacy mode all the time by setting TIXML_DEFAULT_ENCODING = TIXML_ENCODING_LEGACY. Likewise, you may force it to TIXML_ENCODING_UTF8 with the same technique.</b><p>
For English users, using English XML, UTF-8 is the same as low-ASCII. You don't need to be aware of UTF-8 or change your code in any way. You can think of UTF-8 as a "superset" of ASCII.<p>
UTF-8 is not a double byte format - but it is a standard encoding of Unicode! TinyXml does not use or directly support wchar, TCHAR, or Microsofts _UNICODE at this time. It is common to see the term "Unicode" improperly refer to UTF-16, a wide byte encoding of unicode. This is a source of confusion.<p>
For "high-ascii" languages - everything not English, pretty much - TinyXml can handle all languages, at the same time, as long as the XML is encoded in UTF-8. That can be a little tricky, older programs and operating systems tend to use the "default" or "traditional" code page. Many apps (and almost all modern ones) can output UTF-8, but older or stubborn (or just broken) ones still output text in the default code page.<p>
For example, Japanese systems traditionally use SHIFT-JIS encoding. Text encoded as SHIFT-JIS can not be read by tinyxml. A good text editor can import SHIFT-JIS and then save as UTF-8.<p>
The <a href="http://skew.org/xml/tutorial/">Skew.org link</a> does a great job covering the encoding issue.<p>
The test file "utf8test.xml" is an XML containing English, Spanish, Russian, and Simplified Chinese. (Hopefully they are translated correctly). The file "utf8test.gif" is a screen capture of the XML file, rendered in IE. Note that if you don't have the correct fonts (Simplified Chinese or Russian) on your system, you won't see output that matches the GIF file even if you can parse it correctly. Also note that (at least on my Windows machine) console output is in a Western code page, so that Print() or printf() cannot correctly display the file. This is not a bug in TinyXml - just an OS issue. No data is lost or destroyed by TinyXml. The console just doesn't render UTF-8.<p>
<h3>Entities </h3>
<p>
TinyXml recognizes the pre-defined "character entities", meaning special characters. Namely:<p>
<div class="fragment"><pre class="fragment">	&amp;amp;	&amp;
	&amp;lt;	&lt;
	&amp;gt;	&gt;
	&amp;quot;	"
	&amp;apos;	'
</pre></div><p>
These are recognized when the XML document is read, and translated to there UTF-8 equivalents. For instance, text with the XML of:<p>
<div class="fragment"><pre class="fragment">	Far &amp;amp; Away
</pre></div><p>
will have the Value() of "Far &amp; Away" when queried from the <a class="el" href="classTiXmlText.html">TiXmlText</a> object, and will be written back to the XML stream/file as an ampersand. Older versions of TinyXml "preserved" character entities, but the newer versions will translate them into characters.<p>
Additionally, any character can be specified by its Unicode code point: The syntax "&amp;#xA0;" or "&amp;#160;" are both to the non-breaking space characher.<p>
<h3>Streams </h3>
<p>
With TIXML_USE_STL on, TiXml has been modified to support both C (FILE) and C++ (operator &lt;&lt;,&gt;&gt;) streams. There are some differences that you may need to be aware of.<p>
C style output:<ul>
<li>based on FILE*</li><li>the Print() and SaveFile() methods</li></ul>
<p>
Generates formatted output, with plenty of white space, intended to be as human-readable as possible. They are very fast, and tolerant of ill formed XML documents. For example, an XML document that contains 2 root elements and 2 declarations, will still print.<p>
C style input:<ul>
<li>based on FILE*</li><li>the Parse() and LoadFile() methods</li></ul>
<p>
A fast, tolerant read. Use whenever you don't need the C++ streams.<p>
C++ style ouput:<ul>
<li>based on std::ostream</li><li>operator&lt;&lt;</li></ul>
<p>
Generates condensed output, intended for network transmission rather than readability. Depending on your system's implementation of the ostream class, these may be somewhat slower. (Or may not.) Not tolerant of ill formed XML: a document should contain the correct one root element. Additional root level elements will not be streamed out.<p>
C++ style input:<ul>
<li>based on std::istream</li><li>operator&gt;&gt;</li></ul>
<p>
Reads XML from a stream, making it useful for network transmission. The tricky part is knowing when the XML document is complete, since there will almost certainly be other data in the stream. TinyXml will assume the XML data is complete after it reads the root element. Put another way, documents that are ill-constructed with more than one root element will not read correctly. Also note that operator&gt;&gt; is somewhat slower than Parse, due to both implementation of the STL and limitations of TinyXml.<p>
<h3>White space </h3>
<p>
The world simply does not agree on whether white space should be kept, or condensed. For example, pretend the '_' is a space, and look at "Hello____world". HTML, and at least some XML parsers, will interpret this as "Hello_world". They condense white space. Some XML parsers do not, and will leave it as "Hello____world". (Remember to keep pretending the _ is a space.) Others suggest that __Hello___world__ should become Hello___world.<p>
It's an issue that hasn't been resolved to my satisfaction. TinyXml supports the first 2 approaches. Call <a class="el" href="classTiXmlBase.html#e0">TiXmlBase::SetCondenseWhiteSpace( bool )</a> to set the desired behavior. The default is to condense white space.<p>
If you change the default, you should call <a class="el" href="classTiXmlBase.html#e0">TiXmlBase::SetCondenseWhiteSpace( bool )</a> before making any calls to Parse XML data, and I don't recommend changing it after it has been set.<p>
<h3>Handles </h3>
<p>
Where browsing an XML document in a robust way, it is important to check for null returns from method calls. An error safe implementation can generate a lot of code like:<p>
<div class="fragment"><pre class="fragment">TiXmlElement* root = document.FirstChildElement( "Document" );
if ( root )
{
	TiXmlElement* element = root-&gt;FirstChildElement( "Element" );
	if ( element )
	{
		TiXmlElement* child = element-&gt;FirstChildElement( "Child" );
		if ( child )
		{
			TiXmlElement* child2 = child-&gt;NextSiblingElement( "Child" );
			if ( child2 )
			{
				// Finally do something useful.
</pre></div><p>
Handles have been introduced to clean this up. Using the <a class="el" href="classTiXmlHandle.html">TiXmlHandle</a> class, the previous code reduces to:<p>
<div class="fragment"><pre class="fragment">TiXmlHandle docHandle( &amp;document );
TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).Element();
if ( child2 )
{
	// do something useful
</pre></div><p>
Which is much easier to deal with. See <a class="el" href="classTiXmlHandle.html">TiXmlHandle</a> for more information.<p>
<h3>Row and Column tracking </h3>
<p>
Being able to track nodes and attributes back to their origin location in source files can be very important for some applications. Additionally, knowing where parsing errors occured in the original source can be very time saving.<p>
TinyXml can tracks the row and column origin of all nodes and attributes in a text file. The <a class="el" href="classTiXmlBase.html#a3">TiXmlBase::Row()</a> and <a class="el" href="classTiXmlBase.html#a4">TiXmlBase::Column()</a> methods return the origin of the node in the source text. The correct tabs can be configured in <a class="el" href="classTiXmlDocument.html#a20">TiXmlDocument::SetTabSize()</a>.<p>
<h2>Using and Installing </h2>
<p>
To Compile and Run xmltest:<p>
A Linux Makefile and a Windows Visual C++ .dsw file is provided. Simply compile and run. It will write the file demotest.xml to your disk and generate output on the screen. It also tests walking the DOM by printing out the number of nodes found using different techniques.<p>
The Linux makefile is very generic and will probably run on other systems, but is only tested on Linux. You no longer need to run 'make depend'. The dependecies have been hard coded.<p>
<h3>Windows project file for VC6</h3>
<p>
<ul>
<li>
tinyxml: tinyxml library, non-STL  </li>
<li>
tinyxmlSTL: tinyxml library, STL  </li>
<li>
tinyXmlTest: test app, non-STL  </li>
<li>
tinyXmlTestSTL: test app, STL  </li>
</ul>
<p>
<h3>Linux Make file</h3>
<p>
At the top of the makefile you can set:<p>
PROFILE, DEBUG, and TINYXML_USE_STL. Details (such that they are) are in the makefile.<p>
In the tinyxml directory, type "make clean" then "make". The executable file 'xmltest' will be created.<p>
<h3>To Use in an Application:</h3>
<p>
Add tinyxml.cpp, <a class="el" href="tinyxml_8h-source.html">tinyxml.h</a>, tinyxmlerror.cpp, tinyxmlparser.cpp, tinystr.cpp, and <a class="el" href="tinystr_8h-source.html">tinystr.h</a> to your project or make file. That's it! It should compile on any reasonably compliant C++ system. You do not need to enable exceptions or RTTI for TinyXml.<p>
<h2>How TinyXml works. </h2>
<p>
An example is probably the best way to go. Take: <div class="fragment"><pre class="fragment">	&lt;?xml version="1.0" standalone=no&gt;
	&lt;!-- Our to do list data --&gt;
	&lt;ToDo&gt;
		&lt;Item priority="1"&gt; Go to the &lt;bold&gt;Toy store!&lt;/bold&gt;&lt;/Item&gt;
		&lt;Item priority="2"&gt; Do bills&lt;/Item&gt;
	&lt;/ToDo&gt;
</pre></div><p>
Its not much of a To Do list, but it will do. To read this file (say "demo.xml") you would create a document, and parse it in: <div class="fragment"><pre class="fragment">	TiXmlDocument doc( "demo.xml" );
	doc.LoadFile();
</pre></div><p>
And its ready to go. Now lets look at some lines and how they relate to the DOM.<p>
<div class="fragment"><pre class="fragment">&lt;?xml version="1.0" standalone=no&gt;
</pre></div><p>
The first line is a declaration, and gets turned into the <a class="el" href="classTiXmlDeclaration.html">TiXmlDeclaration</a> class. It will be the first child of the document node.<p>
This is the only directive/special tag parsed by by TinyXml. Generally directive targs are stored in <a class="el" href="classTiXmlUnknown.html">TiXmlUnknown</a> so the commands wont be lost when it is saved back to disk.<p>
<div class="fragment"><pre class="fragment">&lt;!-- Our to do list data --&gt;
</pre></div><p>
A comment. Will become a <a class="el" href="classTiXmlComment.html">TiXmlComment</a> object.<p>
<div class="fragment"><pre class="fragment">&lt;ToDo&gt;
</pre></div><p>
The "ToDo" tag defines a <a class="el" href="classTiXmlElement.html">TiXmlElement</a> object. This one does not have any attributes, but does contain 2 other elements.<p>
<div class="fragment"><pre class="fragment">&lt;Item priority="1"&gt; 
</pre></div><p>
Creates another <a class="el" href="classTiXmlElement.html">TiXmlElement</a> which is a child of the "ToDo" element. This element has 1 attribute, with the name "priority" and the value "1".<p>
Go to the<p>
A <a class="el" href="classTiXmlText.html">TiXmlText</a>. This is a leaf node and cannot contain other nodes. It is a child of the "Item" <a class="el" href="classTiXmlElement.html">TiXmlElement</a>.<p>
<div class="fragment"><pre class="fragment">&lt;bold&gt;
</pre></div><p>
Another <a class="el" href="classTiXmlElement.html">TiXmlElement</a>, this one a child of the "Item" element.<p>
Etc.<p>
Looking at the entire object tree, you end up with: <div class="fragment"><pre class="fragment">TiXmlDocument				"demo.xml"
	TiXmlDeclaration		"version='1.0'" "standalone=no"
	TiXmlComment			" Our to do list data"
	TiXmlElement			"ToDo"
		TiXmlElement		"Item"		Attribtutes: priority = 1
			TiXmlText		"Go to the "
			TiXmlElement    "bold"
				TiXmlText	"Toy store!"
		TiXmlElement			"Item"		Attributes: priority=2
			TiXmlText			"Do bills"
</pre></div><p>
<h2>Documentation </h2>
<p>
The documentation is build with Doxygen, using the 'dox' configuration file.<p>
<h2>License </h2>
<p>
TinyXml is released under the zlib license:<p>
This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.<p>
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:<p>
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.<p>
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.<p>
3. This notice may not be removed or altered from any source distribution.<p>
<h2>References </h2>
<p>
The World Wide Web Consortium is the definitive standard body for XML, and there web pages contain huge amounts of information.<p>
The definitive spec: <a href="http://www.w3.org/TR/2004/REC-xml-20040204/">http://www.w3.org/TR/2004/REC-xml-20040204/</a><p>
I also recommend "XML Pocket Reference" by Robert Eckstein and published by OReilly...the book that got the whole thing started.<p>
<h2>Contributors, Contacts, and a Brief History </h2>
<p>
Thanks very much to everyone who sends suggestions, bugs, ideas, and encouragement. It all helps, and makes this project fun. A special thanks to the contributors on the web pages that keep it lively.<p>
So many people have sent in bugs and ideas, that rather than list here we try to give credit due in the "changes.txt" file.<p>
TinyXml was originally written be Lee Thomason. (Often the "I" still in the documenation.) Lee reviews changes and releases new versions, with the help of Yves Berquin and the tinyXml community.<p>
We appreciate your suggestions, and would love to know if you use TinyXml. Hopefully you will enjoy it and find it useful. Please post questions, comments, file bugs, or contact us at:<p>
www.sourceforge.net/projects/tinyxml<p>
Lee Thomason, Yves Berquin <hr size="1"><address style="align: right;"><small>Generated on Sat Oct 8 14:15:30 2005 for TinyXml by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>
