Bonsoir
J'ai un nouveau problème...
Je traite mon fichier xml tout va bien mais j'ai rajouté pas mal de petite balise à traiter et là par contre ça plante...
Je sais pas pourquoi quand on en met trop ça ne fonctionne plus...
J'utilise SAX faut il que je passe sur DOM ?
Voilà le code pour vous donnez une idée de la longueur si jamais c'est pas le problème du nombre de balise :
Et le fichier XML est comme ceci : (je pense que le plantage vient surtout de synopsis mais c'est pas toujours le cas mais en tout cas quand je le mets sa plante direct.
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 void FenInfos::traitement_xml() { QList<QString> results; QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender()); QXmlStreamReader reader(reply->readAll()); reader.readNext(); reader.readNext(); while (!reader.atEnd()) { if (reader.isStartElement()) { if (reader.name() == "root") { reader.readNext(); while(reader.isStartElement()==false) reader.readNext(); if(reader.name() == "film") { reader.readNext(); while(reader.isStartElement()==false) reader.readNext(); if(reader.name() == "titre") { QString Titre = reader.readElementText(); results.append(Titre); reader.readNext(); while(reader.isStartElement()==false) reader.readNext(); } else if(reader.name() == "date_sortie") { QString Date_sortie = reader.readElementText(); results.append(Date_sortie); reader.readNext(); while(reader.isStartElement()==false) reader.readNext(); } else if(reader.name() == "realise_par") { QString Realise_par = reader.readElementText(); results.append(Realise_par); reader.readNext(); while(reader.isStartElement()==false) reader.readNext(); } else if(reader.name() == "titre_original") { QString Titre_original = reader.readElementText(); results.append(Titre_original); reader.readNext(); while(reader.isStartElement()==false) reader.readNext(); } else if(reader.name() == "genre") { QString Genre = reader.readElementText(); results.append(Genre); reader.readNext(); while(reader.isStartElement()==false) reader.readNext(); } else if(reader.name() == "duree") { QString Duree = reader.readElementText(); results.append(Duree); reader.readNext(); while(reader.isStartElement()==false) reader.readNext(); } else if(reader.name() == "annee_production") { QString Annee_production = reader.readElementText(); results.append(Annee_production); reader.readNext(); while(reader.isStartElement()==false) reader.readNext(); } else if(reader.name() == "distributeur") { QString Distributeur = reader.readElementText(); results.append(Distributeur); reader.readNext(); while(reader.isStartElement()==false) reader.readNext(); } else if(reader.name() == "synopsis") { QString Synopsis = reader.readElementText(); results.append(Synopsis); reader.readNext(); while(reader.isStartElement()==false) reader.readNext(); } else if(reader.name() == "lien_image") { QString Lien_image = reader.readElementText(); results.append(Lien_image); } } } } reader.readNext(); } reply->deleteLater(); affichage(results); }
Merci !
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 <?xml version="1.0" encoding="utf-8"?> <root> <film> <titre>Shooter tireur d'élite</titre> <date_sortie>18 avril 2007</date_sortie> <realise_par>Antoine Fuqua</realise_par> <titre_original>Shooter</titre_original> <genre>Action</genre> <duree>02h04min</duree> <annee_production>2007</annee_production> <distributeur>Paramount Pictures France</distributeur> <synopsis><![CDATA[L'éclaireur et tireur d'élite Bob Lee Swagger s'est couvert de gloire sur divers fronts avant qu'une odieuse trahison ne l'amène à quitter les Marines et à se couper du monde. Reclus dans un chalet, au sommet d'une montagne quasi inaccessible, Swagger pense avoir tourné la page et se croit désormais à l'abri de toute nouvelle mésaventure. Mais lorsque le colonel Isaac Johnson vient le relancer et lui demande une fois de plus son aide pour déjouer un complot imminent contre le Président des Etats-Unis, le "shooter" ne peut se dérober à son devoir. Comment pourrait-il anticiper le piège diabolique qui lui est tendu et deviner qu'il va bientôt se retrouver accusé de tentative de meurtre ? Traqué à travers tout le pays par une meute de mercenaires, il est obligé de mobiliser toutes ses ressources pour survivre, retrouver son honneur et déjouer la plus terrifiante des conspirations.]]></synopsis> <lien_image>http://images.allocine.fr/r_160_214/b_1_cfd7e1/medias/nmedia/18/63/77/83/18750618.jpg</lien_image> </film> </root>
Partager