我有一个空的QDomNodeList(list1)和另一个(list2)包含节点A的直接子节点,如上面的XMl所述。
<A>
<P></P>
<P></P>
<Q>
<P></P>
</Q>
</A>
现在我想只将那些节点从list2复制到listq,其名称为Q。
我无法将list2中的节点复制到list1。
QDomNodeList list1,list2;
list2 = a.childNodes(); // copying child nodes of a tag in list 2
for(int i = 0 ; i < list2.count() ; i++)
{
if(list2.at(i).nodeName() == "Q")
{
cout<<"i : "<<i<<endl;
// Appending is giving error "Calling appendChild() on a null node does nothing"
list1.at(i).appendChild(list2.at(i));
}
}
cout<<"No of Q : "<<list1.count()<<endl;
我怎么能这样做?
提前致谢。
答案 0 :(得分:1)
list1.at(i)
将返回默认的构造节点,因此它将是一个空节点。这就是错误的来源。
您需要创建临时QDomDocument
来存储所需的节点。
QDomDocument temporary("tempDoc");
QDomNodeList list1,list2;
list2 = a.childNodes();
// copying child nodes of a tag in list 2
for(int i = 0 ; i < list2.count() ; i++)
{
if(list2.at(i).nodeName() == "Q")
{
cout<<"i : "<<i<<endl;
temporary.appendChild(temporary.importNode(list2.at(i), true));
}
}
list1 = temporary.childNodes();
cout<<"No of Q : "<<list1.count()<<endl;