Isis 3.0 Programmer Reference
Back | Home
IsisXMLApplication.cpp
Go to the documentation of this file.
1 
24 #include <string>
25 
26 #include <xercesc/sax2/SAX2XMLReader.hpp>
27 #include <xercesc/sax2/Attributes.hpp>
28 #include <xercesc/util/PlatformUtils.hpp>
29 
30 #include "IsisXMLApplication.h"
31 #include "IsisXMLChTrans.h"
32 
33 #include "IString.h"
34 
35 using namespace std;
36 
37 // Constructors
38 IsisXMLApplication::IsisXMLApplication(char *PencodingName,
39  bool &PexpandNamespaces,
40  XERCES::SAX2XMLReader* &Pparser,
41  IsisAmlData *PappData) {
42  encodingName = PencodingName;
43  expandNamespaces = PexpandNamespaces;
44  parser = Pparser;
45  appData = PappData;
46 
47  parser->setContentHandler(this);
48  parser->setErrorHandler(this);
49 
50  briefHandler = NULL;
51  descriptionHandler = NULL;
52  groupsHandler = NULL;
53  multipleValuesHandler = NULL;
54  ignoreHandler = NULL;
55  historyHandler = NULL;
56 }
57 
58 IsisXMLApplication::~IsisXMLApplication() {
59 
60  if(briefHandler != NULL) delete briefHandler;
61  if(descriptionHandler != NULL) delete descriptionHandler;
62  if(groupsHandler != NULL) delete groupsHandler;
63  if(multipleValuesHandler != NULL) delete multipleValuesHandler;
64  if(ignoreHandler != NULL) delete ignoreHandler;
65  if(historyHandler != NULL) delete historyHandler;
66 }
67 
68 
69 // Callback methodes for handling pieces of the xml file
70 
71 // IsisXMLApplication: Overrides of the SAX DocumentHandler interface
72 void IsisXMLApplication::characters(const XMLCh *const chars,
73  const XMLSize_t length) {}
74 
75 
76 
77 void IsisXMLApplication::endDocument() {}
78 
79 
80 void IsisXMLApplication::endElement(const XMLCh *const uri,
81  const XMLCh *const localname,
82  const XMLCh *const qname) {
83 }
84 
85 
86 void IsisXMLApplication::processingInstruction(const XMLCh *const target,
87  const XMLCh *const data) {}
88 
89 
90 void IsisXMLApplication::startDocument() {}
91 
92 
93 void IsisXMLApplication::startElement(const XMLCh *const uri,
94  const XMLCh *const localname,
95  const XMLCh *const qname,
96  const XERCES::Attributes &attributes) {
97 
98  if((string)XERCES::XMLString::transcode(localname) == (string)"application") {
99  QString name = XERCES::XMLString::transcode(attributes.getValue((XMLSize_t)0));
100  appData->name = name.toLower();
101  }
102  else if((string)XERCES::XMLString::transcode(localname) == (string)"brief") {
103  if(briefHandler != NULL) {
104  delete briefHandler;
105  briefHandler = NULL;
106  }
107  briefHandler = new IsisXMLHandler(encodingName, expandNamespaces,
108  parser, &appData->brief);
109  }
110  else if((string)XERCES::XMLString::transcode(localname) == (string)"description") {
111  if(descriptionHandler != NULL) {
112  delete descriptionHandler;
113  descriptionHandler = NULL;
114  }
115  descriptionHandler = new IsisXMLHandler(encodingName, expandNamespaces,
116  parser, &appData->description);
117  }
118  else if((string)XERCES::XMLString::transcode(localname) == (string)"groups") {
119  if(groupsHandler != NULL) {
120  delete groupsHandler;
121  groupsHandler = NULL;
122  }
123  groupsHandler = new IsisXMLGroups(encodingName, expandNamespaces, parser,
124  &appData->groups);
125  }
126  else if((string)XERCES::XMLString::transcode(localname) == (string)"category") {
127  if(multipleValuesHandler != NULL) {
128  delete multipleValuesHandler;
129  multipleValuesHandler = NULL;
130  }
131  multipleValuesHandler = new IsisXMLMultipleValues(encodingName, expandNamespaces,
132  parser, &appData->categorys);
133  }
134  else if((string)XERCES::XMLString::transcode(localname) == (string)"history") {
135  if(historyHandler != NULL) {
136  delete historyHandler;
137  historyHandler = NULL;
138  }
139  historyHandler = new IsisXMLHistory(encodingName, expandNamespaces,
140  parser, &appData->changes);
141  }
142  else {
143  if(ignoreHandler != NULL) {
144  delete ignoreHandler;
145  ignoreHandler = NULL;
146  }
147  ignoreHandler = new IsisXMLIgnore(encodingName, expandNamespaces, parser,
148  (string)XERCES::XMLString::transcode(localname));
149  }
150 }

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the ISIS Support Center
File Modified: 07/12/2023 23:20:51