我的xml文件很少,并且其中的某些节点包含彼此的“引用”。我想将此xml的内容作为子元素添加到包含此引用的节点

void GameObject::ExpandNode(QDomElement& expNode)
{

    if ((expNode.tagName() == "Instance" && expNode.attribute("type") == "library") ||
         (expNode.tagName() == "library" && expNode.hasAttribute("file")))
    {
        QString fileName;
        if (expNode.tagName() == "Instance" )
            fileName = FindLib(expNode.attribute("definition")).attribute("file");
        else
            fileName = expNode.attribute("file");
        QFile nestedFile(fileName);
        QDomDocument nestedLib;
        nestedLib.setContent(&nestedFile);
        QDomElement nestedNode = libDoc->createElement("NestedLibrary");
        nestedNode.setAttribute("path", fileName);
        nestedNode.appendChild(nestedLib);
        expNode.appendChild(nestedNode);
    }

    QDomNode childNode = expNode.firstChild();
    while (!childNode.isNull())
    {
        if (childNode.isElement())
            ExpandNode(childNode.toElement());
        childNode = childNode.nextSibling();
    }
}

但是我得到的是
没有匹配的函数来调用'GameObject::ExpandNode(QDomElement)'ExpandNode(childNode.toElement());

我该怎么做呢?
^

最佳答案

错误的决定-使用临时对象调用ExpandNode。解决方法是

QDomNode childNode = expNode.firstChild();
while (!childNode.isNull())
{
    if (childNode.isElement())
    {
        QDomElement childElem = childNode.toElement();
        ExpandNode(childElem);
    }
    childNode = childNode.nextSibling();
}

09-11 17:34