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;
}