qt - 添加一个节点到 QDomNodeList

我有一个空的 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/

相关文章:

python - 子列表具有共同元素的列表的合并列表

ruby-on-rails-3 - heroku rails logging 不显示输出?

.net - 如何正确标记代码指标的设计器代码以忽略它

parsing - AT+CMGL指令异常消息如何处理

ruby-on-rails - 在Mongoid中如何找到字段数组计数大于一定数量的所有记录?

azure - 我的 cspack 命令应该是什么来打包 azure 项目

jsf - Primefaces 命令按钮 : f:attribute does not work

regex - 在 Dreamweaver 中自动执行多个正则表达式搜索/替换查询

fonts - python matplotlib mathtext AMSeuler 字体

visual-studio-2010 - 没有 Team Foundation Server 的 V