Добрый вечер ребята. Подскажите пожалуйста, что я не так написала в коде. Мне нужно разобрать xml файл, достать значения атрибутов.
Мой код работает, но почему-то я не могу получить тег с именем Modules, а мне нужен его атрибут path.
Вот содержимое моего xml-файла:
XML
<Modules path="./">
<module name="grabber" version="1.0" hash="3hjh2g327fg8y@jeiofhf82ubvbwdjinqdnv3r8y3r9vfivn efpivh13r89vh3r89vh3r80gv7834gv3r"/>
<module name="viewer" version="1.0" hash=" "/>
</Modules>
Вот код моей программы:
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <QtXml>
void traverseNode(const QDomNode& node)
{
QDomNode domNode = node.firstChild();
while(!domNode.isNull()) {
if(domNode.isElement()) {
QDomElement domElement = domNode.toElement();
if(!domElement.isNull()) {
qDebug()<<domElement.tagName();
if(domElement.tagName() == "module") {
qDebug() << "Attr: "
<< domElement.attribute("name", "")
<< domElement.attribute("version","")
<< domElement.attribute("hash","");
}
else
if(domElement.tagName() == "Modules") {
qDebug() << "Attr: "
<< domElement.attribute("path", "!");
}
else {
qDebug() << "TagName: " << domElement.tagName()
<< "\tText: " << domElement.text();
}
}
}
traverseNode(domNode);
domNode = domNode.nextSibling();
}
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QDomDocument domDoc;
QFile file("modules.xml");
if(file.open(QIODevice::ReadOnly)) {
if(domDoc.setContent(&file)) {
QDomElement domElement= domDoc.documentElement();
traverseNode(domElement);
}
file.close();
}
return a.exec();
}
В выводе приложения получаю:
Запускается /home/urivskay/QtProjects/Qt+Xml/Qt+Xml...
"module"
Attr: "grabber" "1.0" "3hjh2g327fg8y@jeiofhf82ubvbwdjinqdnv3r8y3r9vfivn efpivh13r89vh3r89vh3r80gv7834gv3r"
"module"
Attr: "viewer" "1.0" " "
Программа неожиданно завершилась.
Подскажите пожалуйста как мне поймать самый первый корневой тег Modules ?