質問

このような文字列を受け取る:

<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 空だった。ここで何が間違っているのですか?

前もって感謝します。

役に立ちましたか?

解決

どうやらノード内のテキストもノード自体です。これが機能する方法です:

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

他のヒント

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

この関数は、各ノードを取得するためのアイテム関数があるQDOMNODLISTを返します(そして、いくつの数があるかを知るためにカウント)

これから私はコードがおそらくあるべきだと言うでしょう

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(); 
}

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top