00001 /*------------------------------------------------------- 00002 | | 00003 | FEDM_XmlParser_TinyReader.h | 00004 | | 00005 --------------------------------------------------------- 00006 00007 Copyright © 2008-2011 FEIG ELECTRONIC GmbH, All Rights Reserved. 00008 Lange Strasse 4 00009 D-35781 Weilburg 00010 Federal Republic of Germany 00011 phone : +49 6471 31090 00012 fax : +49 6471 310999 00013 e-mail : obid-support@feig.de 00014 Internet : http://www.feig.de 00015 00016 Author : Markus Hultsch 00017 Begin : 23.01.2008 00018 Version : 04.00.02 / 22.08.2011 / M. Hultsch 00019 Operation Systems : independent 00020 Function : xml reader class based on tinyxml parser API 00021 00022 OBID® and OBID i-scan® are registered Trademarks of FEIG ELECTRONIC GmbH. 00023 Linux® is a registered trademark of Linus Torvalds. 00024 Microsoft® and Windows® are registered trademarks of Microsoft Corporation. 00025 */ 00026 00027 00028 //########################### 00029 // D E F I N E S 00030 //########################### 00031 #ifndef FEDM_XMLPARSER_TINY_READER_H 00032 #define FEDM_XMLPARSER_TINY_READER_H 00033 00034 00035 00036 #ifdef _MSC_VER 00037 // The (microsoft) debugger can't handle symbols more than 255 characters long. 00038 // STL often creates symbols longer than that. 00039 // When symbols are longer than 255 characters, the warning is disabled. 00040 #pragma warning(disable:4786) // for MFC 00041 #endif 00042 00043 00044 //############################# 00045 // I N C L U D E S 00046 //############################# 00047 #include "FEDM_XmlParser_IReader.h" 00048 #include "tinyxml.h" 00049 00050 00051 00052 //####################################################################################### 00053 // class FEDM_XmlParser_TinyReader 00054 //####################################################################################### 00055 class FEDM_XmlParser_TinyReader : public FEDM_XmlParser_Reader 00056 { 00057 public: 00058 FEDM_XmlParser_TinyReader(void); 00059 virtual ~FEDM_XmlParser_TinyReader(void); 00060 00061 00062 // document management 00063 virtual int OpenDoc(char* sFileName); // open a xml document 00064 virtual int CloseDoc(); // close xml document 00065 virtual int LoadDoc(); // read the xml text from file 00066 virtual int LoadDoc(const char* szOemRootTag); // read the xml text from file 00067 virtual int LoadStream(wstring sXmlStream); // load xml string 00068 00069 virtual void DeleteXmlTree(); 00070 virtual int AddTagItem(FEDM_XML_TREEITEM* pParent, FEDM_XML_TREEITEM* pChild); 00071 00072 virtual FEDM_XML_TREEITEM* FindTag( wstring sTag, 00073 unsigned int uiTagLevel, 00074 bool bNext=false); 00075 00076 virtual FEDM_XML_TREEITEM* FindTag( wstring sTag, 00077 wstring sAttribute, 00078 unsigned int uiTagLevel, 00079 bool bNext=false); 00080 00081 00082 protected: 00083 unsigned int m_uiLastTagLevel; // tag level of last FindTag() 00084 00085 // tinyXML members 00086 TiXmlDocument* m_pDoc; // xml document pointer from OpenDoc() 00087 TiXmlNode* m_pLastParent; // parent node pointer set by last FindTag() 00088 TiXmlNode* m_pLastChild[20]; // child node pointer for each tag level set by last FindTag() 00089 }; 00090 00091 00092 #endif // #ifndef FEDM_XMLPARSER_TINY_READER_H 00093