pugiXML将现有节点附加到文档中

时间:2020-06-26 11:45:54

标签: c++ xml pugixml

这是我的代码:

void SaveHandler::saveGrid(TileGrid &grid, const char * Filename, bool saveToSceneFile)
{
  pugi::xml_node gridNode;

for (int L = 0; L < grid.m_tileLayers.size(); L++)
{
    for (int C = 0; C < grid.m_tileLayers[L].size(); C++)
    {
        for (int R = 0; R < grid.m_tileLayers[L][C].size(); R++)
        {
            std::string nodeName = "T" + std::to_string(L) + std::to_string(C) + std::to_string(R);

            if (grid.m_tileLayers[L][C][R].getisValid() == false) { break; }

            pugi::xml_node tileNode = gridNode.append_child(nodeName.c_str());
            tileNode.append_attribute("Name") = grid.m_tileLayers[L][C][R].getTextureName().c_str();
            tileNode.append_attribute("PosX") = C;
            tileNode.append_attribute("PosY") = R;
        }
    }
}
if (!saveToSceneFile)
{
    std::string savePath = std::string(GridsSaveLocation) + Filename + ".xml";
    pugi::xml_document doc;
    doc.append_child("Grid") = gridNode; //TODO append grid node into the file
    doc.save_file(savePath.c_str());
}
else
{
    std::string savePath = std::string(ScenesSaveLocation) + Filename + ".xml";
    pugi::xml_document doc;
    if(!doc.load_file(savePath.c_str()))Log("Grid Path not found", "SaveHandler.cpp", Type::Error);
    pugi::xml_node scene = doc.child("Scene");
    scene.append_child("Grid") = gridNode;
    doc.save_file(savePath.c_str());
}
}

我第一次在一个大型2D游戏项目中工作,我正在尝试创建一个save grid功能,该功能可以在特定场景内保存瓷砖网格。

这实际上是创建一个名为gridNode的节点并将网格中的每个单个图块保存为它的子节点,但是这里的问题是我无法将该节点添加到XMLdocument中(请忽略if语句,该问题在else语句中)

scene.append_child("Grid") = gridNode;

在这里似乎没用,我不能做

 gridNode = scene.append_child("Grid");

因为这将清空gridNode,然后将其附加到文档中

我的问题是我如何将现有节点附加到文档或另一个节点,我尝试了append_copy函数,但它也不起作用

(我很抱歉,如果我的英语有点不好,我不是英语母语人士)

0 个答案:

没有答案
相关问题