Isis 3 Programmer Reference
IsisXMLGroup.cpp
1
6/* SPDX-License-Identifier: CC0-1.0 */
7
8#include <string>
9
10#include <xercesc/util/PlatformUtils.hpp>
11#include <xercesc/sax2/SAX2XMLReader.hpp>
12#include <xercesc/sax2/Attributes.hpp>
13
14#include "IsisXMLGroup.h"
15#include "IsisXMLChTrans.h"
16
17#include "IString.h"
18
19using namespace std;
20
21namespace XERCES = XERCES_CPP_NAMESPACE;
22
23// Constructors
24IsisXMLGroup::IsisXMLGroup(char *PencodingName,
25 bool &PexpandNamespaces,
26 XERCES::SAX2XMLReader* &Pparser,
27 IsisGroupData *Pgroup) {
28
29 encodingName = PencodingName;
30 expandNamespaces = PexpandNamespaces;
31 parser = Pparser;
32 group = Pgroup;
33
34 prevDocHandler = parser->getContentHandler();
35 prevErrorHandler = parser->getErrorHandler();
36
37 parser->setContentHandler(this);
38 parser->setErrorHandler(this);
39
40 parameterHandler = NULL;
41 ignoreHandler = NULL;
42
43}
44
45IsisXMLGroup::~IsisXMLGroup() {
46
47 if(parameterHandler != NULL) delete parameterHandler;
48 if(ignoreHandler != NULL) delete ignoreHandler;
49}
50
51
52// IsisXMLGroup: Overrides of the SAX DocumentHandler interface
53void IsisXMLGroup::characters(const XMLCh *const chars,
54 const XMLSize_t length) {
55}
56
57
58void IsisXMLGroup::endElement(const XMLCh *const uri,
59 const XMLCh *const localname,
60 const XMLCh *const qname) {
61 parser->setContentHandler(prevDocHandler);
62 parser->setErrorHandler(prevErrorHandler);
63}
64
65void IsisXMLGroup::startElement(const XMLCh *const uri,
66 const XMLCh *const localname,
67 const XMLCh *const qname,
68 const XERCES::Attributes &attributes) {
69
70 if((string)XERCES::XMLString::transcode(localname) == (string)"parameter") {
71 if(parameterHandler != NULL) {
72 delete parameterHandler;
73 parameterHandler = NULL;
74 }
75 unsigned int index = group->parameters.size();
76 group->parameters.resize(index + 1);
77 QString name = XERCES::XMLString::transcode(attributes.getValue((XMLSize_t)0));
78// Taken out after PVL refactor name.UpCase();
79 group->parameters[index].name = name;
80 parameterHandler = new IsisXMLParameter(encodingName, expandNamespaces,
81 parser, &group->parameters[index]);
82 }
83 else {
84 if(ignoreHandler != NULL) {
85 delete ignoreHandler;
86 ignoreHandler = NULL;
87 }
88 ignoreHandler = new IsisXMLIgnore(encodingName, expandNamespaces, parser,
89 (string)XERCES::XMLString::transcode(localname));
90 }
91}
This is free and unencumbered software released into the public domain.
This is free and unencumbered software released into the public domain.
Namespace for the standard library.

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 USGS Astrogeology Discussion Board
To report a bug, or suggest a feature go to: ISIS Github
File Modified: 02/24/2025 16:15:01