|
#include <iostream> |
|
#include"tinyxml2.h" |
|
#include<string> |
|
|
|
using namespace std; |
|
using namespace tinyxml2; |
|
string a; |
|
string b; |
|
string c; |
|
string d; |
|
string a1; |
|
|
|
|
|
void createXml() |
|
{ |
|
|
|
|
|
|
|
tinyxml2::XMLDocument xml; |
|
tinyxml2::XMLDeclaration* declaration = xml.NewDeclaration(); |
|
xml.InsertFirstChild(declaration); |
|
|
|
|
|
|
|
|
|
tinyxml2::XMLElement* rootNode = xml.NewElement("computer"); |
|
xml.InsertEndChild(rootNode); |
|
|
|
|
|
|
|
|
|
tinyxml2::XMLElement* root_1_NodeComputerMonitor = xml.NewElement("ComputerMonitor"); |
|
tinyxml2::XMLElement* root_1_NodeKeyboard = xml.NewElement("Keyboard"); |
|
tinyxml2::XMLElement* root_1_CPU = xml.NewElement("CPU"); |
|
|
|
|
|
|
|
|
|
tinyxml2::XMLText* text_root_1_NodeComputerMonitor = xml.NewText("SAMSUNG"); |
|
root_1_NodeComputerMonitor->InsertFirstChild(text_root_1_NodeComputerMonitor); |
|
|
|
tinyxml2::XMLText* text_root_1_root_1_CPU = xml.NewText("intel"); |
|
root_1_CPU->InsertFirstChild(text_root_1_root_1_CPU); |
|
|
|
|
|
|
|
|
|
root_1_NodeComputerMonitor->SetAttribute("size", "15"); |
|
root_1_CPU->SetAttribute("series", "XEON"); |
|
|
|
|
|
|
|
|
|
tinyxml2::XMLElement* root_2_NodeKeyboardAttribute = xml.NewElement("KeyboardAttribute"); |
|
|
|
|
|
|
|
|
|
tinyxml2::XMLText* text_root_2_NodeKeyboardAttribute = xml.NewText("cherry Mechanical Keyboard"); |
|
root_2_NodeKeyboardAttribute->InsertFirstChild(text_root_2_NodeKeyboardAttribute); |
|
|
|
|
|
|
|
|
|
rootNode->InsertEndChild(root_1_NodeComputerMonitor); |
|
rootNode->InsertEndChild(root_1_NodeKeyboard); |
|
rootNode->InsertEndChild(root_1_CPU); |
|
|
|
|
|
|
|
root_1_NodeKeyboard->InsertEndChild(root_2_NodeKeyboardAttribute); |
|
|
|
|
|
|
|
|
|
xml.SaveFile("computer.xml"); |
|
} |
|
|
|
void deCodeXml() |
|
{ |
|
|
|
|
|
|
|
tinyxml2::XMLDocument xml; |
|
|
|
|
|
|
|
|
|
if (xml.LoadFile("computer.xml") != XML_SUCCESS) |
|
{ |
|
return; |
|
} |
|
|
|
|
|
|
|
|
|
tinyxml2::XMLElement* rootNode = xml.RootElement(); |
|
if (rootNode == NULL) { |
|
return; |
|
} |
|
|
|
|
|
|
|
|
|
tinyxml2::XMLElement* root_1_NodeComputerMonitor = rootNode->FirstChildElement("ComputerMonitor"); |
|
std::string text_root_1_NodeComputerMonitor = root_1_NodeComputerMonitor->GetText(); |
|
std::string text_root_1_size = root_1_NodeComputerMonitor->Attribute("size"); |
|
a=text_root_1_NodeComputerMonitor.c_str(); |
|
a1=text_root_1_size; |
|
|
|
|
|
|
|
|
|
|
|
tinyxml2::XMLElement* root_1_NodeKeyboard = rootNode->FirstChildElement("Keyboard"); |
|
tinyxml2::XMLElement* root_2_NodeKeyboardAttribute = root_1_NodeKeyboard->FirstChildElement("KeyboardAttribute"); |
|
std::string text_root_2_NodeKeyboardAttribute = root_2_NodeKeyboardAttribute->GetText(); |
|
b = text_root_2_NodeKeyboardAttribute.c_str(); |
|
|
|
tinyxml2::XMLElement* root_1_NodeCPU = rootNode->FirstChildElement("CPU"); |
|
std::string text_root_1_NodeCPU = root_1_NodeCPU->GetText(); |
|
std::string text_root_1_series = root_1_NodeCPU->Attribute("series"); |
|
c=text_root_1_series; |
|
d=text_root_1_NodeCPU; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct ComputerMonitor |
|
{ |
|
string size; |
|
string type; |
|
}; |
|
struct CPU |
|
{ |
|
string series; |
|
string type; |
|
|
|
}; |
|
struct computer |
|
{ |
|
struct ComputerMonitor cm1 ; |
|
string Keyboard; |
|
struct CPU cpu1; |
|
|
|
}; |
|
int main() |
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
deCodeXml(); |
|
|
|
|
|
|
|
struct computer computer1; |
|
computer1.cm1.size=a ; |
|
computer1.cm1.type=a1; |
|
computer1.Keyboard = b; |
|
computer1.cpu1.series=c; |
|
computer1.cpu1.type=d; |
|
cout<<computer1.cm1.size<<endl; |
|
cout<<computer1.cm1.type<<endl; |
|
cout<<computer1.Keyboard<<endl; |
|
cout<<computer1.cpu1.series<<endl; |
|
cout<<computer1.cpu1.type<<endl; |
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|