void FGXMLParse::startElement (const char * name, const XMLAttributes &atts) { string Name(name); Element *temp_element; working_string.erase(); if (!first_element_read) { document = new Element(Name); current_element = document; first_element_read = true; } else { temp_element = new Element(Name); temp_element->SetParent(current_element); current_element->AddChildElement(temp_element); current_element = temp_element; } if (current_element == 0L) { cerr << "No current element read (no top-level element in XML file?)" << endl; exit (-1); } for (int i=0; i<atts.size();i++) { current_element->AddAttribute(atts.getName(i), atts.getValue(i)); } }
void FGXMLParse::startElement (const char * name, const XMLAttributes &atts) { string Name(name); Element *temp_element; working_string.erase(); if (!first_element_read) { document = new Element(Name); current_element = document; first_element_read = true; } else { temp_element = new Element(Name); temp_element->SetParent(current_element); current_element->AddChildElement(temp_element); current_element = temp_element; } if (current_element == 0L) { std::stringstream error; error << "In file " << getPath() << ": line " << getLine() << endl << "No current element read (running out of memory?)" << endl; throw std::runtime_error(error.str()); } current_element->SetLineNumber(getLine()); current_element->SetFileName(getPath()); for (int i=0; i<atts.size();i++) { current_element->AddAttribute(atts.getName(i), atts.getValue(i)); } }
void plotXMLVisitor::startElement (const char * name, const XMLAttributes &atts) { current_element = name; for (int i=0; i<atts.size();i++) { if (string(atts.getName(i)) == string("axis")) { if (string(atts.getValue(i)) == string("x")) axis = eX; else if (string(atts.getValue(i)) == string("y2")) axis = eY2; else axis = eY; } else { cerr << "Unknown attribute " << atts.getName(i) << " encountered." << endl; exit (-1); } if (i == 1) { cerr << "Too many attributes. Offending attribute (item:" << i << ") is " << atts.getName(i) << endl; exit (-1); } } if (!first_element_read) { if (current_element != string("plotset")) { cerr << endl << " This is not a valid plotset description (" << current_element << ")" << endl; exit (-1); } else { first_element_read = true; } } if (current_element == "page") { vPages.push_back(Page()); inPage = true; } else if (current_element == "plot") { if (!inPage) { vPlots.push_back(Plots()); } else { vPages.back().vPlots.push_back(Plots()); } } }