#include <BaseXMLFile.h>
Inheritance diagram for BaseXMLFile:
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 |
Definition at line 9 of file BaseXMLFile.h.
BaseXMLFile::BaseXMLFile | ( | const std::string & | filename, | |
const std::string & | verify_ns = "" , |
|||
const std::string & | verify_root = "" | |||
) |
Definition at line 8 of file BaseXMLFile.cpp.
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 | ( | ) |
xmlDocPtr BaseXMLFile::GetDocument | ( | ) | [inline] |
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 | ( | ) |
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; }
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] |
std::string BaseXMLFile::m_ns_prefix [private] |
std::string BaseXMLFile::m_ns_href [private] |
bool BaseXMLFile::m_ok [private] |