我有几个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());
我该怎么做? ^
答案 0 :(得分:1)
使用临时对象调用ExpandNode是错误的决定。解决方案是
QDomNode childNode = expNode.firstChild();
while (!childNode.isNull())
{
if (childNode.isElement())
{
QDomElement childElem = childNode.toElement();
ExpandNode(childElem);
}
childNode = childNode.nextSibling();
}
答案 1 :(得分:0)
isElement:如果此函数返回true,则表示此对象不是QDomElement;
这样做 QDomElement node = childNode.toElement; if(node!= NULL) { ExpandNode(节点); }