Импорт XML в дерево DOM в Qt - PullRequest
0 голосов
/ 20 апреля 2011

Я использую Qt 4.7 в Mac OS X, и у меня есть QString, содержащая путь к файлу XML.Я хотел бы импортировать этот файл в дерево DOM и сохранить данные как переменную-член класса.Каков наилучший способ сделать это?

Я просматривал документацию QtXml , но не могу найти четкого способа преобразования классов QXml* в классы QDom*.

1 Ответ

2 голосов
/ 20 апреля 2011

Не думаю, что вам нужно беспокоиться о классах QXml * для обхода DOM.

Класс QDomDocument имеет метод setContent (), который может принимать открытый файл QFile.

Пример кода находится в разделе «Подробности» документации QDomDocument.

QDomDocument doc("mydocument");
QFile file("mydocument.xml");
if (!file.open(QIODevice::ReadOnly))
    return;
if (!doc.setContent(&file)) {
    file.close();
    return;
}
file.close();

// print out the element names of all elements that are direct children
// of the outermost element.
QDomElement docElem = doc.documentElement();

QDomNode n = docElem.firstChild();
while(!n.isNull()) {
    QDomElement e = n.toElement(); // try to convert the node to an element.
    if(!e.isNull()) {
        cout << qPrintable(e.tagName()) << endl; // the node really is an element.
    }
    n = n.nextSibling();
}
...