ROOT logo
// @(#)root/xmlparser:$Id: TXMLParser.h 29654 2009-07-31 14:34:14Z rdm $
// Author: Jose Lo   12/4/2005

/*************************************************************************
 * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TXMLParser
#define ROOT_TXMLParser

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TXMLParser                                                           //
//                                                                      //
// TXMLParser is an abstract class which interfaces with Libxml2.       //
// Libxml2 is the XML C parser and toolkit developed for the Gnome      //
// project.                                                             //
//                                                                      //
// The libxml library provides two interfaces to the parser, a DOM      //
// style tree interface and a SAX style event based interface.          //
//                                                                      //
// TXMLParser is parent class of TSAXParser and TDOMParser, which are   //
// a SAX interface and DOM interface of libxml.                         //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TQObject
#include "TQObject.h"
#endif

#ifndef ROOT_TObject
#include "TObject.h"
#endif

#ifndef ROOT_TString
#include "TString.h"
#endif

struct   _xmlParserCtxt;


class TXMLParser : public TObject, public TQObject {

private:
   TXMLParser(const TXMLParser&);            // Not implemented
   TXMLParser& operator=(const TXMLParser&); // Not implemented

protected:
   _xmlParserCtxt     *fContext;          // parse the xml file
   Bool_t              fValidate;         // to validate the parse context
   Bool_t              fReplaceEntities;  // replace entities
   Bool_t              fStopError;        // stop when parse error occurs
   TString             fValidateError;    // parse error
   TString             fValidateWarning;  // parse warning
   Int_t               fParseCode;        // to keep track of the errorcodes

   virtual void        InitializeContext();
   virtual void        ReleaseUnderlying();
   virtual void        OnValidateError(const TString& message);
   virtual void        OnValidateWarning(const TString& message);
   virtual void        SetParseCode(Int_t code);

public:
   TXMLParser();
   virtual ~TXMLParser();

   void                SetValidate(Bool_t val = kTRUE);
   Bool_t              GetValidate() const { return fValidate; }

   void                SetReplaceEntities(Bool_t val = kTRUE);
   Bool_t              GetReplaceEntities() const { return fReplaceEntities; }

   virtual Int_t       ParseFile(const char *filename) = 0;
   virtual Int_t       ParseBuffer(const char *contents, Int_t len) = 0;
   virtual void        StopParser();

   Int_t               GetParseCode() const { return fParseCode; }

   const char         *GetParseCodeMessage(Int_t parseCode) const;

   void                SetStopOnError(Bool_t stop = kTRUE);
   Bool_t              GetStopOnError() const { return fStopError; }

   const char         *GetValidateError() const { return fValidateError; }
   const char         *GetValidateWarning() const { return fValidateWarning; }

   ClassDef(TXMLParser,0);  // XML SAX parser
};

#endif
 TXMLParser.h:1
 TXMLParser.h:2
 TXMLParser.h:3
 TXMLParser.h:4
 TXMLParser.h:5
 TXMLParser.h:6
 TXMLParser.h:7
 TXMLParser.h:8
 TXMLParser.h:9
 TXMLParser.h:10
 TXMLParser.h:11
 TXMLParser.h:12
 TXMLParser.h:13
 TXMLParser.h:14
 TXMLParser.h:15
 TXMLParser.h:16
 TXMLParser.h:17
 TXMLParser.h:18
 TXMLParser.h:19
 TXMLParser.h:20
 TXMLParser.h:21
 TXMLParser.h:22
 TXMLParser.h:23
 TXMLParser.h:24
 TXMLParser.h:25
 TXMLParser.h:26
 TXMLParser.h:27
 TXMLParser.h:28
 TXMLParser.h:29
 TXMLParser.h:30
 TXMLParser.h:31
 TXMLParser.h:32
 TXMLParser.h:33
 TXMLParser.h:34
 TXMLParser.h:35
 TXMLParser.h:36
 TXMLParser.h:37
 TXMLParser.h:38
 TXMLParser.h:39
 TXMLParser.h:40
 TXMLParser.h:41
 TXMLParser.h:42
 TXMLParser.h:43
 TXMLParser.h:44
 TXMLParser.h:45
 TXMLParser.h:46
 TXMLParser.h:47
 TXMLParser.h:48
 TXMLParser.h:49
 TXMLParser.h:50
 TXMLParser.h:51
 TXMLParser.h:52
 TXMLParser.h:53
 TXMLParser.h:54
 TXMLParser.h:55
 TXMLParser.h:56
 TXMLParser.h:57
 TXMLParser.h:58
 TXMLParser.h:59
 TXMLParser.h:60
 TXMLParser.h:61
 TXMLParser.h:62
 TXMLParser.h:63
 TXMLParser.h:64
 TXMLParser.h:65
 TXMLParser.h:66
 TXMLParser.h:67
 TXMLParser.h:68
 TXMLParser.h:69
 TXMLParser.h:70
 TXMLParser.h:71
 TXMLParser.h:72
 TXMLParser.h:73
 TXMLParser.h:74
 TXMLParser.h:75
 TXMLParser.h:76
 TXMLParser.h:77
 TXMLParser.h:78
 TXMLParser.h:79
 TXMLParser.h:80
 TXMLParser.h:81
 TXMLParser.h:82
 TXMLParser.h:83
 TXMLParser.h:84
 TXMLParser.h:85
 TXMLParser.h:86
 TXMLParser.h:87
 TXMLParser.h:88
 TXMLParser.h:89
 TXMLParser.h:90
 TXMLParser.h:91
 TXMLParser.h:92
 TXMLParser.h:93
 TXMLParser.h:94