1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
Xml_Dom::Xml_Dom() : QWidget()
{
QDomDocument dom("mon_xml");
QFile xml_doc("test.xml");
if(!xml_doc.open(QIODevice::ReadOnly))
{
QMessageBox::warning(this, "Erreur à l'ouverture du document XML", "Le document XML n'a pas pu etre ouvert. Verifiez que le nom est le bon et que le document est bien place");
return;
}
if (!dom.setContent(&xml_doc))
{
xml_doc.close();
QMessageBox::warning(this, "Erreur a l'ouverture du document XML", "Le document XML n'a pas pu etre attribue a l'objet QDomDocument.");
return;
}
unsigned int i=0;
QString affichage;
QDomNodeList tab;
QDomElement album;
QDomNode n;
QMessageBox a(0);
QDomElement racine = dom.documentElement();//renvoie la balise racine
QDomNode noeud = racine.firstChild();//renvoie la 1ère balise « mesure »
while(!noeud.isNull())
{
//convertit le nud en élément pour utiliser les
//méthodes tagName() et attribute()
album = noeud.toElement();
if (album.tagName() == "Musique")
{
affichage = album.attribute("name");//récupère lattribut
tab = mesure.childNodes();//crée un tableau des enfants de « album »
for(i=0;i<tab.length();i++)
{
//pour chaque enfant, on extrait la donnée et on concatène
n = tab.item(i);
affichage = affichage + " " + n.firstChild().toText().data();
}
std::cout << qPrintable(affichage) << std::endl; on affiche pour voir si ça marche
}
noeud = noeud.nextSibling();//passe à la album suivante
}
} |