Google
Web alhem.net

BaseXMLFile Class Reference

#include <BaseXMLFile.h>

Inheritance diagram for BaseXMLFile:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 BaseXMLFile (const std::string &filename, const std::string &verify_ns="", const std::string &verify_root="")
 ~BaseXMLFile ()
xmlDocPtr GetDocument ()
xmlNodePtr GetRootElement ()
std::string GetProperty (const std::string &)
xmlNodePtr GetChildrenNode ()
xmlNodePtr GetNextNode ()
const std::string & GetNodeName ()
void SetCurrent (xmlNodePtr p)
xmlNsPtr GetNodeNs ()
const std::string & GetNodeNsPrefix ()
const std::string & GetNodeNsHref ()
xmlNodePtr GetFirstElement (const std::string &)
xmlNodePtr GetFirstElement (xmlNodePtr, const std::string &)
xmlNodePtr GetNextElement (xmlNodePtr, const std::string &)
bool IsOk ()

Private Attributes

xmlDocPtr m_doc
xmlNodePtr m_current
std::string m_current_name
std::string m_ns_prefix
std::string m_ns_href
bool m_ok

Detailed Description

Definition at line 9 of file BaseXMLFile.h.


Constructor & Destructor Documentation

BaseXMLFile::BaseXMLFile ( const std::string &  filename,
const std::string &  verify_ns = "",
const std::string &  verify_root = "" 
)

Definition at line 8 of file BaseXMLFile.cpp.

References m_doc, and m_ok.

00009 : m_doc(NULL)
00010 ,m_current(NULL)
00011 ,m_ok(false)
00012 {
00013         xmlNodePtr cur;
00014         xmlNsPtr ns;
00015 
00016         if (!(m_doc = xmlParseFile(filename.c_str() )))
00017         {
00018                 fprintf(stderr,"xmlParseFile('%s') failed\n",filename.c_str());
00019                 return;
00020         }
00021         if (!(cur = xmlDocGetRootElement(m_doc)))
00022         {
00023                 fprintf(stderr, "Empty document\n");
00024                 xmlFreeDoc(m_doc);
00025                 m_doc = NULL;
00026                 return;
00027         }
00028         if (verify_ns.size())
00029         {
00030                 if (!(ns = xmlSearchNsByHref(m_doc, cur, (const xmlChar *) verify_ns.c_str() )))
00031                 {
00032                         fprintf(stderr, "Document namespace != '%s'\n", verify_ns.c_str());
00033                         xmlFreeDoc(m_doc);
00034                         m_doc = NULL;
00035                         return;
00036                 }
00037         }
00038         if (verify_root.size())
00039         {
00040                 if (xmlStrcmp(cur -> name, (const xmlChar *) verify_root.c_str() ))
00041                 {
00042                         fprintf(stderr, "Document root != '%s'\n",verify_root.c_str());
00043                         xmlFreeDoc(m_doc);
00044                         m_doc = NULL;
00045                         return;
00046                 }
00047         }
00048         m_ok = true;
00049 }

BaseXMLFile::~BaseXMLFile (  ) 

Definition at line 52 of file BaseXMLFile.cpp.

References m_doc.

00053 {
00054         if (m_doc)
00055         {
00056                 xmlFreeDoc(m_doc);
00057         }
00058 }


Member Function Documentation

xmlDocPtr BaseXMLFile::GetDocument (  )  [inline]

Definition at line 15 of file BaseXMLFile.h.

References m_doc.

00015 { return m_doc; }

xmlNodePtr BaseXMLFile::GetRootElement (  ) 

Definition at line 61 of file BaseXMLFile.cpp.

References m_current, and m_doc.

Referenced by GetFirstElement(), and RobotXMLFile::GetString().

00062 {
00063         m_current = m_doc ? xmlDocGetRootElement(m_doc) : NULL;
00064         return m_current;
00065 }

std::string BaseXMLFile::GetProperty ( const std::string &   ) 

Definition at line 68 of file BaseXMLFile.cpp.

References m_current.

Referenced by RobotXMLFile::GetMethods(), RobotXMLFile::GetString(), and RobotXMLFile::GetVariables().

00069 {
00070         xmlChar *p = m_current ? xmlGetProp(m_current, (const xmlChar *) name.c_str() ) : NULL;
00071         if (!p)
00072         {
00073                 return "";
00074         }
00075         std::string str = (char *)p;
00076         xmlFree(p);
00077         return str;
00078 }

xmlNodePtr BaseXMLFile::GetChildrenNode (  ) 

Definition at line 81 of file BaseXMLFile.cpp.

References m_current.

Referenced by GetFirstElement(), RobotXMLFile::GetMethods(), and RobotXMLFile::GetVariables().

00082 {
00083         m_current = m_current ? m_current -> xmlChildrenNode : NULL;
00084         return m_current;
00085 }

xmlNodePtr BaseXMLFile::GetNextNode (  ) 

Definition at line 88 of file BaseXMLFile.cpp.

References m_current.

Referenced by GetFirstElement(), RobotXMLFile::GetMethods(), GetNextElement(), and RobotXMLFile::GetVariables().

00089 {
00090         do
00091         {
00092                 m_current = m_current ? m_current -> next : NULL;
00093         } while (m_current && xmlIsBlankNode( m_current ));
00094         return m_current;
00095 }

const std::string & BaseXMLFile::GetNodeName (  ) 

Definition at line 98 of file BaseXMLFile.cpp.

References m_current, and m_current_name.

Referenced by GetFirstElement(), and GetNextElement().

00099 {
00100         if (m_current)
00101         {
00102                 m_current_name = (char *)m_current -> name;
00103         }
00104         else
00105         {
00106                 m_current_name = "";
00107         }
00108         return m_current_name;
00109 }

void BaseXMLFile::SetCurrent ( xmlNodePtr  p  )  [inline]

Definition at line 21 of file BaseXMLFile.h.

References m_current.

Referenced by GetFirstElement(), RobotXMLFile::GetMethods(), GetNextElement(), RobotXMLFile::GetString(), and RobotXMLFile::GetVariables().

00021 { m_current = p; }

xmlNsPtr BaseXMLFile::GetNodeNs (  ) 

Definition at line 112 of file BaseXMLFile.cpp.

References m_current.

00113 {
00114         if (m_current)
00115                 return m_current -> ns;
00116         return NULL;
00117 }

const std::string & BaseXMLFile::GetNodeNsPrefix (  ) 

Definition at line 120 of file BaseXMLFile.cpp.

References m_current, and m_ns_prefix.

00121 {
00122         if (m_current && m_current -> ns && m_current -> ns -> prefix)
00123         {
00124                 m_ns_prefix = (char *)m_current -> ns -> prefix;
00125         }
00126         else
00127         {
00128                 m_ns_prefix = "";
00129         }
00130         return m_ns_prefix;
00131 }

const std::string & BaseXMLFile::GetNodeNsHref (  ) 

Definition at line 134 of file BaseXMLFile.cpp.

References m_current, and m_ns_href.

00135 {
00136         if (m_current && m_current -> ns && m_current -> ns -> href)
00137         {
00138                 m_ns_href = (char *)m_current -> ns -> href;
00139         }
00140         else
00141         {
00142                 m_ns_href = "";
00143         }
00144         return m_ns_href;
00145 }

xmlNodePtr BaseXMLFile::GetFirstElement ( const std::string &   ) 

Definition at line 148 of file BaseXMLFile.cpp.

References GetChildrenNode(), GetNextNode(), GetNodeName(), and GetRootElement().

Referenced by RobotXMLFile::Find(), RobotXMLFile::GetMethods(), and RobotXMLFile::GetVariables().

00149 {
00150         GetRootElement();
00151         xmlNodePtr p = GetChildrenNode();
00152         while (p)
00153         {
00154                 if (name == GetNodeName())
00155                 {
00156                         return p;
00157                 }
00158                 p = GetNextNode();
00159         }
00160         return NULL;
00161 }

xmlNodePtr BaseXMLFile::GetFirstElement ( xmlNodePtr  ,
const std::string &   
)

Definition at line 164 of file BaseXMLFile.cpp.

References GetChildrenNode(), GetNextNode(), GetNodeName(), and SetCurrent().

00165 {
00166         SetCurrent(base);
00167         xmlNodePtr p = GetChildrenNode();
00168         while (p)
00169         {
00170                 if (name == GetNodeName())
00171                 {
00172                         return p;
00173                 }
00174                 p = GetNextNode();
00175         }
00176         return NULL;
00177 }

xmlNodePtr BaseXMLFile::GetNextElement ( xmlNodePtr  ,
const std::string &   
)

Definition at line 180 of file BaseXMLFile.cpp.

References GetNextNode(), GetNodeName(), and SetCurrent().

00181 {
00182         SetCurrent(p);
00183         p = GetNextNode();
00184         while (p)
00185         {
00186                 if (name == GetNodeName())
00187                 {
00188                         return p;
00189                 }
00190                 p = GetNextNode();
00191         }
00192         return NULL;
00193 }

bool BaseXMLFile::IsOk (  )  [inline]

Definition at line 30 of file BaseXMLFile.h.

References m_ok.

Referenced by Robot::IsOk().

00030 { return m_ok; }


Member Data Documentation

xmlDocPtr BaseXMLFile::m_doc [private]

Definition at line 33 of file BaseXMLFile.h.

Referenced by BaseXMLFile(), GetDocument(), GetRootElement(), and ~BaseXMLFile().

xmlNodePtr BaseXMLFile::m_current [private]

Definition at line 34 of file BaseXMLFile.h.

Referenced by GetChildrenNode(), GetNextNode(), GetNodeName(), GetNodeNs(), GetNodeNsHref(), GetNodeNsPrefix(), GetProperty(), GetRootElement(), and SetCurrent().

std::string BaseXMLFile::m_current_name [private]

Definition at line 35 of file BaseXMLFile.h.

Referenced by GetNodeName().

std::string BaseXMLFile::m_ns_prefix [private]

Definition at line 36 of file BaseXMLFile.h.

Referenced by GetNodeNsPrefix().

std::string BaseXMLFile::m_ns_href [private]

Definition at line 37 of file BaseXMLFile.h.

Referenced by GetNodeNsHref().

bool BaseXMLFile::m_ok [private]

Definition at line 38 of file BaseXMLFile.h.

Referenced by BaseXMLFile(), and IsOk().


The documentation for this class was generated from the following files:
Generated for Robot World by doxygen 1.3.6

Page, code, and content Copyright (C) 2004 by Anders Hedström