qdomdocumentで子ノードの値を取得する方法は?
質問
このような文字列を受け取る:
<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();
}
おそらく、インデックスが範囲内にあることをノデリストカウントを使用して確認する必要があります。
所属していません StackOverflow