Main Page   Namespace List   File List   Examples  

XMLNode.hpp

Go to the documentation of this file.
00001 /*
00002  * (C) Copyright 2002, Schlund+Partner AG
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00017 */
00018 
00031 #ifndef SP_GXML_XMLNODE_HPP
00032 #define SP_GXML_XMLNODE_HPP
00033 
00034 // STDC++
00035 #include <string>
00036 
00037 // C libraries
00038 #include <libxslt/xsltInternals.h>
00039 #include <libxml/xpath.h>
00040 #include <libxml/tree.h>
00041 
00042 namespace SP {
00043 namespace GXML {
00044 
00045 class XMLNode
00046 {
00047 public:
00048         XMLNode();
00049         XMLNode( const xmlNodePtr node );
00050         ~XMLNode();
00051 
00052         enum Exceptions
00053         {
00054                 NO_NODE=1,        // NodePtr is NULL
00055                 LAST_NODE,        // node has no following sibling
00056                 FIRST_NODE,       // node has no preceding sibling
00057                 DOC_NODE,         // node is document node (has no parent)
00058                 NO_CHILD,         // node has no children
00059                 NO_CONTENT,       // node has no content (no child text-node)
00060                 NO_ATTRIBUTES,    // node has no attributes
00061                 NO_VALUE          // attribute has no value (should never happen)
00062         };
00063         // XMLTree getDoc(); makes no sense till there is a doc-object
00065         // hint:
00066         // EVERY group of spcaes or characters is contained within a invisible
00067         // text-node.
00068         // i.e. <node/>  <node/> expands to <node/><text>  </text><node/>
00069         // return next node in order (every space between tags is a text node!)
00070         // throws LAST_NODE if no following sibling exists
00071         XMLNode getNext();
00072         // return previous node in order
00073         // throws FIRST_NODE if no preceding sibling exists
00074         XMLNode getPrev();
00075         // return parent of current node
00076         // throws DOC_NODE if no parent exists
00077         XMLNode getParent();
00078         // return first child of node (text-node if node has content)
00079         // throws
00080         XMLNode getChild();
00081         // return last child of node
00082         XMLNode getLast();
00083 
00084         // return node type (i.e. XML_ELEMENT_NODE, XML_ATTRIBUTE_NODE,
00085         // XML_TEXT_NODE, ... )
00086         int getType();
00087         // return name of node-tag
00088         std::string getName();
00089         // return content of node (which is the content of the first child text-node)
00090         std::string getContent();
00091         // return attribute value by name
00092         std::string getAttribute( const std::string& name );
00093         // XMLAttributeSet getAttributeSet( XMLNode* node );
00094 
00095         // returns XML subtree of node
00096         std::string getNodeDump();
00097 
00098         xmlNodePtr getNodePtr();
00099 
00100 private:
00101         xmlNodePtr node_;
00102 };
00103 
00104 }}
00105 #endif

Generated on Thu Jun 3 19:20:12 2004 for sp-gxmlcpp by doxygen1.2.15