1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
/*=========================================================================
Program: ParaView
Module: vtkPVXMLParser.h
Copyright (c) Kitware, Inc.
All rights reserved.
See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkPVXMLParser
*
* This is a subclass of vtkXMLParser that constructs a representation
* of parsed XML using vtkPVXMLElement.
*/
#ifndef vtkPVXMLParser_h
#define vtkPVXMLParser_h
#include "vtkPVCommonModule.h" // needed for export macro
#include "vtkSmartPointer.h" // needed for vtkSmartPointer.
#include "vtkXMLParser.h"
class vtkPVXMLElement;
class VTKPVCOMMON_EXPORT vtkPVXMLParser : public vtkXMLParser
{
public:
vtkTypeMacro(vtkPVXMLParser, vtkXMLParser);
void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
static vtkPVXMLParser* New();
/**
* Write the parsed XML into the output stream.
*/
void PrintXML(ostream& os);
/**
* Get the root element from the XML document.
*/
vtkPVXMLElement* GetRootElement();
//@{
/**
* If on, then the Parse method will NOT report an error using vtkErrorMacro.
* Rather, it will just return false. This feature is useful when simply
* checking to see if a file is a valid XML file or there is otherwise a way
* to recover from the failed parse. This flag is off by default.
*/
vtkGetMacro(SuppressErrorMessages, int);
vtkSetMacro(SuppressErrorMessages, int);
vtkBooleanMacro(SuppressErrorMessages, int);
//@}
/**
* Convenience method to parse XML contents. Will return NULL is the
* xmlcontents cannot be parsed.
*/
static vtkSmartPointer<vtkPVXMLElement> ParseXML(
const char* xmlcontents, bool suppress_errors = false);
protected:
vtkPVXMLParser();
~vtkPVXMLParser();
int SuppressErrorMessages;
void StartElement(const char* name, const char** atts) VTK_OVERRIDE;
void EndElement(const char* name) VTK_OVERRIDE;
void CharacterDataHandler(const char* data, int length) VTK_OVERRIDE;
void AddElement(vtkPVXMLElement* element);
void PushOpenElement(vtkPVXMLElement* element);
vtkPVXMLElement* PopOpenElement();
// The root XML element.
vtkPVXMLElement* RootElement;
// The stack of elements currently being parsed.
vtkPVXMLElement** OpenElements;
unsigned int NumberOfOpenElements;
unsigned int OpenElementsSize;
// Counter to assign unique element ids to those that don't have any.
unsigned int ElementIdIndex;
// Called by Parse() to read the stream and call ParseBuffer. Can
// be replaced by subclasses to change how input is read.
virtual int ParseXML() VTK_OVERRIDE;
// Overridden to implement the SuppressErrorMessages feature.
virtual void ReportXmlParseError() VTK_OVERRIDE;
private:
vtkPVXMLParser(const vtkPVXMLParser&) VTK_DELETE_FUNCTION;
void operator=(const vtkPVXMLParser&) VTK_DELETE_FUNCTION;
};
#endif
|