Domanda

Un riceve una stringa come questa:

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

Mi piacerebbe usare QDomDocument per ottenere i valori dei nodi figlio argomenti per il loro indice (vorrei estrarre le stringhe '# 998,40' e '49920' nell'esempio).

Questo è quello che ho provato:

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

Ma anche arg era vuoto. Che cosa sto facendo male qui?

Grazie in anticipo.

È stato utile?

Soluzione

Quindi, a quanto pare il testo all'interno di un nodo è un nodo stesso, anche. Ecco come funziona:

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

Altri suggerimenti

elementsByTagName () restituisce un elenco di tutti i nodi (gli elementi in realtà) con il nome tag "argomenti" nei nodi sotto-albero. .at () restituisce uno di questi "argomenti" elementi della lista, non i loro figli. Se si desidera che i bambini, è necessario iterare i rispettivi childNodes ().

Questa funzione restituisce una QDomNodList da cui si gode una funzione di voce per ottenere ogni nodo (e un conteggio per sapere quanti ce ne sono)

Da questo direi che il codice probabilmente dovrebbe essere

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

Probabilmente dovrebbe controllare utilizzando il conteggio NodeList che l'indice è entro certi limiti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top