Mbed port of the Simple Plain Xml parser. See http://code.google.com/p/spxml/ for more details. This library uses less memory and is much better suited to streaming data than TinyXML (doesn\'t use as much C++ features, and especially works without streams). See http://mbed.org/users/hlipka/notebook/xml-parsing/ for usage examples.

Dependents:   spxmltest_weather VFD_fontx2_weather weather_LCD_display News_LCD_display ... more

Revision:
0:3fa97f2c0505
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/spxmlhandle.hpp	Wed Nov 24 20:52:14 2010 +0000
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2008 Stephen Liu
+ * LGPL, see http://code.google.com/p/spxml/
+ * For license terms, see the file COPYING along with this library.
+ */
+
+#ifndef __spxmlhandle_hpp__
+#define __spxmlhandle_hpp__
+
+class SP_XmlNode;
+
+class SP_XmlElementNode;
+class SP_XmlCDataNode;
+class SP_XmlCommentNode;
+
+/**
+ *  This class is a clone of TinyXML's TiXmlHandle class.
+ *
+ *
+ *  A SP_XmlHandle is a class that wraps a node pointer with null checks; this is
+ *  an incredibly useful thing. Note that SP_XmlHandle is not part of the SPXml
+ *  DOM structure. It is a separate utility class.
+ *
+
+    Take an example:
+    @verbatim
+    <Document>
+        <Element attributeA = "valueA">
+            <Child attributeB = "value1" />
+            <Child attributeB = "value2" />
+        </Element>
+    <Document>
+    @endverbatim
+
+    Assuming you want the value of "attributeB" in the 2nd "Child" element, a
+    SP_XmlHandle checks for null pointers so it is perfectly safe and correct to use:
+
+    @verbatim
+    SP_XmlHandle rootHandle( parser.getDocument()->getRootElement() );
+    SP_XmlElementNode * child2 = rootHandle.getChild( "Element" )
+            .getChild( "Child", 1 ).toElement();
+
+    if( child2 ) {
+        // do something
+    }
+    @endverbatim
+ *
+ */
+
+class SP_XmlHandle {
+public:
+    SP_XmlHandle( SP_XmlNode * node );
+    SP_XmlHandle( const SP_XmlHandle & ref );
+    SP_XmlHandle & operator=( const SP_XmlHandle & ref );
+
+    ~SP_XmlHandle();
+
+    SP_XmlHandle getChild( const char * name, int index = 0 ) const;
+
+    SP_XmlHandle getChild( int index ) const;
+
+    SP_XmlHandle getElement( int index ) const;
+
+    SP_XmlNode * toNode();
+
+    SP_XmlElementNode * toElement();
+
+    SP_XmlCDataNode * toCData();
+
+private:
+    SP_XmlNode * mNode;
+};
+
+#endif
+