witam jak mogę zrobić zapisz oraz odczyt z xml na sql?
tak mam pod xml'a
bool House::save()
{
xmlDocPtr doc;
xmlNodePtr root, tmp;
xmlMutexLock(xmlmutex);
doc = xmlNewDoc((const xmlChar*)"1.0");
doc->children = xmlNewDocNode(doc, nullptr, (const xmlChar*)"house", nullptr);
root = doc->children;
std::stringstream sb;
tmp = xmlNewNode(nullptr, (const xmlChar*)"frontdoor");
sb << frontDoor.x;
xmlSetProp(tmp, (const xmlChar*) "x", (const xmlChar*)sb.str().c_str());
sb.str("");
sb << frontDoor.y;
xmlSetProp(tmp, (const xmlChar*) "y", (const xmlChar*)sb.str().c_str());
sb.str("");
sb << frontDoor.z;
xmlSetProp(tmp, (const xmlChar*) "z", (const xmlChar*)sb.str().c_str());
sb.str("");
xmlAddChild(root, tmp);
tmp = xmlNewNode(nullptr, (const xmlChar*)"owner");
xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)owner.c_str());
xmlAddChild(root, tmp);
for (size_t i = 0; i < subOwners.size(); i++)
{
tmp = xmlNewNode(nullptr, (const xmlChar*)"subowner");
xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)subOwners[i].c_str());
xmlAddChild(root, tmp);
}
for (size_t i = 0; i < moveI.size(); i++)
{
tmp = xmlNewNode(nullptr, (const xmlChar*)"moveI");
xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)moveI[i].c_str());
xmlAddChild(root, tmp);
}
for (size_t i = 0; i < guests.size(); i++)
{
tmp = xmlNewNode(nullptr, (const xmlChar*)"guest");
xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)guests[i].c_str());
xmlAddChild(root, tmp);
}
DoorOwnersMap::const_iterator iter = doorOwners.begin();
while (iter != doorOwners.end())
{
Position pos = iter->first;
for (size_t i = 0; i < iter->second.size(); i++)
{
tmp = xmlNewNode(nullptr, (const xmlChar*)"doorowner"); // TODO: optimize
sb << pos.x;
xmlSetProp(tmp, (const xmlChar*) "x", (const xmlChar*)sb.str().c_str());
sb.str("");
sb << pos.y;
xmlSetProp(tmp, (const xmlChar*) "y", (const xmlChar*)sb.str().c_str());
sb.str("");
sb << pos.z;
xmlSetProp(tmp, (const xmlChar*) "z", (const xmlChar*)sb.str().c_str());
sb.str("");
xmlSetProp(tmp, (const xmlChar*)"name", (const xmlChar*)iter->second[i].c_str());
xmlAddChild(root, tmp);
}
++iter;
}
xmlSaveFile(file.c_str(), doc);
xmlFreeDoc(doc);
xmlMutexUnlock(xmlmutex);
return true;
}