Extracción de valores de nodos secundarios con QXmlItem como foco de QXmlQuery

Extracción de valores de nodos secundarios con QXmlItem como foco de QXmlQuery


He estado tratando de obtener valores de texto de nodo de este archivo XML:


  <!DOCTYPE structure>
<data>
<x>
<id>1</id>
<nam>tytuł</nam>
<tab>21</tab>
<ind>5</ind>
<pre>TY</pre>
<khw>C.TY</khw>
</x>
<x>
<id>2</id>
<nam>autor</nam>
<tab>21</tab>
<ind>5</ind>
<pre>FO</pre>
<khw>C.FO</khw>
</x>
<x>
<id>3</id>
<nam>hasło korporatywne</nam>
<tab>21</tab>
<ind>5</ind>
<pre>FN</pre>
<khw>C.FN</khw>
</x>
</data>

Lo que quiero hacer es buscar cada nodo y sus hijos y convertirlo a QMap. No tengo problemas para obtener un solo elemento, pero cuando se trata de obtener elementos secundarios configurando el resultado de QXmlQuery como foco, el QString que evalúo la consulta del nodo secundario está vacío. Yo uso este fragmento de código:


QXmlResultItems results;
QFile structure("./structure.xml"); // xml file, as described earlier
structure.open(QFile::ReadOnly);
QXmlQuery query;
query.setFocus(&structure);
query.setQuery("data/x");
query.evaluateTo(&results);
QXmlItem next = results.next();
while(!next.isNull()) {
qDebug() << next.toNodeModelIndex().stringValue(); // everything's fine. It prints contents of <x>'s child nodes
QXmlQuery childQuery;
QString r;
childQuery.setFocus(next);
childQuery.setQuery("./nam/text()"); // already tested: "/nam/text()", "/nam/string()", "x/nam/string()", "data/x/nam/string()" etc... still no luck.
childQuery.evaluateTo(&r);
qDebug() << r; // prints \n but it should print content of <nam> node.
next = results.next();
}

Software que uso:Qt 4.7.2 SDK directamente desde el sitio web de Qt, QtCreator 2.3.1 en Windows y Linux (sin ninguna diferencia en este caso particular, los resultados son los mismos). Quiero estar seguro de que ese es el problema de mi falta de conocimiento, en lugar de un error de software, por favor ayuda