bonjour, j'ai quelques problèmes pour récupérer des valeur dans un fichier xml, en utilisant Qt, je n'arrive pas à parser ce type de fichier avec Qt, pouvez vous m'éclaircir sur ce point?
Voici le fichier xml:
voici la partie de mon code qui parse le fichier xml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <database name=Musique> <album name = April Uprising artist = The John Butler Trio image = Images/JBT.png buy=true> <track number = 01 title = Revolution buy = true interested = true/> ... </album> <album name = Junior artist = Kaki King image = Images/KK.png buy = false interested = true ... </album> </database>
Merci de votre compréhension
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 } }
Partager