2

次のような文字列を受け取ります。

<invoke name="CanClose" returntype="xml">
   <arguments>
       <string># 998.40</string>
       <number>49920</number>
   </arguments>
</invoke>

引数の子ノードの値をインデックスで取得するために使用したいと思いQDomDocumentます(例では文字列「#998.40」と「49920」を抽出したいと思います)。

これは私が試したものです:

QString argument(int index)
{
    QDomNode arg = xml->elementsByTagName("arguments").at(index);
    return arg.nodeValue();
}

しかし、arg空でさえありました。私はここで何が間違っているのですか?

前もって感謝します。

4

3 に答える 3

7

したがって、ノード内のテキストもノード自体であるようです。仕組みは次のとおりです。

QString argument(int index)
{
    QDomNode arg = xml->firstChild().namedItem("arguments");
    return arg.childNodes().at(index).firstChild().nodeValue();
}
于 2010-08-26T09:53:11.357 に答える
0

elementsByTagName()は、ノードサブツリー内のタグ名「arguments」を持つすべてのノード(実際には要素)のリストを返します。.at()は、子ではなく、リストからこれらの「引数」要素の1つを返します。子が必要な場合は、それぞれのchildNodes()を反復処理する必要があります。

于 2010-08-24T21:42:14.740 に答える
-1

この関数はQDomNodListを返し、そこから各ノードを取得するためのitem関数(およびノー​​ドの数を知るためのカウント)があります。

このことから、コードはおそらく次のようになります。

http://doc.trolltech.com/3.3/qdomdocument.html#elementsByTagName

http://doc.trolltech.com/3.3/qdomnodelist.html#item

QString argument(int index) 
{ 
    QDomNode arg = xml->elementsByTagName("arguments").item(index); 
    return arg.nodeValue(); 
}

おそらく、NodeListカウントを使用して、インデックスが範囲内にあることを確認する必要があります。

于 2010-08-24T16:18:57.110 に答える