3

上記の XMl で説明したように、1 つの空の QDomNodeList (list1) と、ノード A の直接の子ノードを含む別の (list2) があります。

<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;

どうすれば同じことができますか?

前もって感謝します。

4

1 に答える 1

1

list1.at(i)リストが空であるため、デフォルトで構築されたノードが返されるため、null ノードになります。そこからエラーが発生します。

必要な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;
于 2012-09-06T10:38:46.710 に答える