我的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();
}