我有一个空的 QDomNodeList (list1) 和另一个 (list2),其中包含上面 XMl 中提到的节点 A 的直接子节点。
<A>
<P></P>
<P></P>
<Q>
<P></P>
</Q>
</A>
现在我只想将那些名称为 Q 的节点从 list2 复制到 listq。
我无法将节点从 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;
我该怎么做?
提前致谢。
最佳答案
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;
https://stackoverflow.com/questions/12296515/