std::string MissingValues::to_string(void) const { std::ostringstream buffer; const size_t missing_values_number = get_missing_values_number(); buffer << "Missing values object\n" << "Instances number: " << instances_number << "\n" << "Variables number: " << variables_number << "\n" << "Missing values number: " << missing_values_number << "\n"; for(size_t i = 0; i < missing_values_number; i++) { buffer << "Missing value " << i+1 << ":\n" << "Instance index: " << items[i].instance_index << "\n" << "Variable index: " << items[i].variable_index << "\n"; } buffer << "Scrubbing method: " << write_scrubbing_method() << "\n"; buffer << "Display: " << display << "\n"; return(buffer.str()); }
tinyxml2::XMLDocument* MissingValues::to_XML(void) const { tinyxml2::XMLDocument* document = new tinyxml2::XMLDocument; std::ostringstream buffer; // MissingValues tinyxml2::XMLElement* missing_values_element = document->NewElement("MissingValues"); document->InsertFirstChild(missing_values_element); tinyxml2::XMLElement* element = NULL; tinyxml2::XMLText* text = NULL; const size_t missing_values_number = get_missing_values_number(); // Instances number { element = document->NewElement("InstancesNumber"); missing_values_element->LinkEndChild(element); buffer.str(""); buffer << instances_number; text = document->NewText(buffer.str().c_str()); element->LinkEndChild(text); } // Variables number { element = document->NewElement("VariablesNumber"); missing_values_element->LinkEndChild(element); buffer.str(""); buffer << variables_number; text = document->NewText(buffer.str().c_str()); element->LinkEndChild(text); } // Scrubbing method { element = document->NewElement("ScrubbingMethod"); missing_values_element->LinkEndChild(element); text = document->NewText(write_scrubbing_method().c_str()); element->LinkEndChild(text); } // Missing values number { element = document->NewElement("MissingValuesNumber"); missing_values_element->LinkEndChild(element); buffer.str(""); buffer << missing_values_number; text = document->NewText(buffer.str().c_str()); element->LinkEndChild(text); } for(size_t i = 0; i < missing_values_number; i++) { element = document->NewElement("Item"); element->SetAttribute("Index", (unsigned)i+1); missing_values_element->LinkEndChild(element); // Instance index tinyxml2::XMLElement* instance_index_element = document->NewElement("InstanceIndex"); element->LinkEndChild(instance_index_element); buffer.str(""); buffer << items[i].instance_index; text = document->NewText(buffer.str().c_str()); instance_index_element->LinkEndChild(text); // Variable index tinyxml2::XMLElement* variable_index_element = document->NewElement("VariableIndex"); element->LinkEndChild(variable_index_element); buffer.str(""); buffer << items[i].variable_index; text = document->NewText(buffer.str().c_str()); variable_index_element->LinkEndChild(text); } // Display { element = document->NewElement("Display"); missing_values_element->LinkEndChild(element); buffer.str(""); buffer << display; text = document->NewText(buffer.str().c_str()); element->LinkEndChild(text); } return(document); }
void MissingValues::write_XML(tinyxml2::XMLPrinter& file_stream) const { std::ostringstream buffer; const size_t missing_values_number = get_missing_values_number(); file_stream.OpenElement("MissingValues"); // Instances number file_stream.OpenElement("InstancesNumber"); buffer.str(""); buffer << instances_number; file_stream.PushText(buffer.str().c_str()); file_stream.CloseElement(); // Variables number file_stream.OpenElement("VariablesNumber"); buffer.str(""); buffer << variables_number; file_stream.PushText(buffer.str().c_str()); file_stream.CloseElement(); // Scrubbing method file_stream.OpenElement("ScrubbingMethod"); file_stream.PushText(write_scrubbing_method().c_str()); file_stream.CloseElement(); // Missing values number file_stream.OpenElement("MissingValuesNumber"); buffer.str(""); buffer << missing_values_number; file_stream.PushText(buffer.str().c_str()); file_stream.CloseElement(); if(missing_values_number <= 0) { file_stream.CloseElement(); return; } std::string instances_indices_text; std::string variables_indices_text; for(size_t i = 0; i < missing_values_number; i++) { // Instance index const size_t instance_index = items[i].instance_index + 1; instances_indices_text.append(number_to_string(instance_index)); if(i != missing_values_number - 1) { instances_indices_text.append(" "); } // Variable index const size_t variable_index = items[i].variable_index + 1; variables_indices_text.append(number_to_string(variable_index)); if(i != missing_values_number - 1) { variables_indices_text.append(" "); } } // Instances indices file_stream.OpenElement("InstancesIndices"); file_stream.PushText(instances_indices_text.c_str()); file_stream.CloseElement(); // Variables indices file_stream.OpenElement("VariablesIndices"); file_stream.PushText(variables_indices_text.c_str()); file_stream.CloseElement(); file_stream.CloseElement(); }
tinyxml2::XMLDocument* MissingValues::to_XML(void) const { tinyxml2::XMLDocument* document = new tinyxml2::XMLDocument; std::ostringstream buffer; // MissingValues tinyxml2::XMLElement* missing_values_element = document->NewElement("MissingValues"); document->InsertFirstChild(missing_values_element); tinyxml2::XMLElement* element = NULL; tinyxml2::XMLText* text = NULL; const size_t missing_values_number = get_missing_values_number(); // Instances number { element = document->NewElement("InstancesNumber"); missing_values_element->LinkEndChild(element); buffer.str(""); buffer << instances_number; text = document->NewText(buffer.str().c_str()); element->LinkEndChild(text); } // Variables number { element = document->NewElement("VariablesNumber"); missing_values_element->LinkEndChild(element); buffer.str(""); buffer << variables_number; text = document->NewText(buffer.str().c_str()); element->LinkEndChild(text); } // Scrubbing method { element = document->NewElement("ScrubbingMethod"); missing_values_element->LinkEndChild(element); text = document->NewText(write_scrubbing_method().c_str()); element->LinkEndChild(text); } // Missing values number { element = document->NewElement("MissingValuesNumber"); missing_values_element->LinkEndChild(element); buffer.str(""); buffer << missing_values_number; text = document->NewText(buffer.str().c_str()); element->LinkEndChild(text); } if(missing_values_number > 0) { tinyxml2::XMLElement* instances_indices_element = document->NewElement("InstancesIndices"); missing_values_element->LinkEndChild(instances_indices_element); tinyxml2::XMLElement* variables_indices_element = document->NewElement("VariablesIndices"); missing_values_element->LinkEndChild(variables_indices_element); std::string instances_indices_text; std::string variables_indices_text; for(size_t i = 0; i < missing_values_number; i++) { // Instance index const size_t instance_index = items[i].instance_index + 1; instances_indices_text.append(number_to_string(instance_index)); if(i != missing_values_number - 1) { instances_indices_text.append(" "); } // Variable index const size_t variable_index = items[i].variable_index + 1; variables_indices_text.append(number_to_string(variable_index)); if(i != missing_values_number - 1) { variables_indices_text.append(" "); } } // Insert instances indices text = document->NewText(instances_indices_text.c_str()); instances_indices_element->LinkEndChild(text); // Insert variables indices text = document->NewText(variables_indices_text.c_str()); variables_indices_element->LinkEndChild(text); } /* for(size_t i = 0; i < missing_values_number; i++) { element = document->NewElement("Item"); element->SetAttribute("Index", (unsigned)i+1); missing_values_element->LinkEndChild(element); // Instance index tinyxml2::XMLElement* instance_index_element = document->NewElement("InstanceIndex"); element->LinkEndChild(instance_index_element); buffer.str(""); buffer << items[i].instance_index+1; text = document->NewText(buffer.str().c_str()); instance_index_element->LinkEndChild(text); // Variable index tinyxml2::XMLElement* variable_index_element = document->NewElement("VariableIndex"); element->LinkEndChild(variable_index_element); buffer.str(""); buffer << items[i].variable_index+1; text = document->NewText(buffer.str().c_str()); variable_index_element->LinkEndChild(text); } */ // Display // { // element = document->NewElement("Display"); // missing_values_element->LinkEndChild(element); // buffer.str(""); // buffer << display; // text = document->NewText(buffer.str().c_str()); // element->LinkEndChild(text); // } return(document); }