Я пытался получить текстовые значения узла из этого XML-файла:
<code> <!DOCTYPE structure>
<data>
<x>
<id>1</id>
<nam>tytuł</nam>
<tab>21</tab>
<ind>5</ind>
<pre>TY
C.TY
2
Автор
21
5
FO
C.FO
3
hasło korporatywne
21
5
FN
функция C.Fn
Что я хочу сделать, это выбрать каждый узел и его дочерние элементы и преобразовать его в QMap. У меня нет проблем с извлечением одного элемента, но когда дело доходит до извлечения дочерних элементов путем установки результата QXmlQuery в качестве фокуса, QString, который я оцениваю, запрос дочернего узла пуст. Я использую этот кусок кода:
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();
}
Программное обеспечение, которое я использую: Qt 4.7.2 SDK непосредственно с веб-сайта Qt, QtCreator 2.3.1 для Windows и Linux (без каких-либо различий в данном конкретном случае результаты совпадают). Я хочу быть уверен, что это проблема моего недостатка знаний, а не ошибки программного обеспечения, пожалуйста, помогите