J'ai un petit souci dans la lecture d'un fichier XML.
Voici un exemple (tiré de la FAQ Qt) :
Code fichier xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?xml version="1.0" encoding="UTF-8"?> <office:document-content> <site> <nom>developpez</nom> <url>www.developpez.com</url> </site> <contributeur> <nom faq="c++">AAA</nom> </contributeur> <contributeur> <nom faq="Qt">Toto</nom> </contributeur> </office:document-content>
Code code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 from PyQt5.QtCore import QFile, QXmlStreamReader file = QFile('monfichier.xml') file.open(QFile.ReadOnly | QFile.Text) reader = QXmlStreamReader() reader.setDevice(file) reader.readNext() while not reader.atEnd(): print(1) reader.readNext()
Sauf erreur de ma part, ce code devrait lire le fichier xml du début à la fin et de token en token. Tant que cette fin de fichier n'est pas atteinte on affiche 1, soit si je compte bien 8 fois.
Malheureusement chez moi le 1 ne s'affiche qu'une seule fois
Alors soit je passe à coté d'un truc tellement gros que je ne le vois pas, ça il y a un truc qui déconne.
Qu'en pensez vous ?
@+
J
[EDIT]
J'ai trouvé mon erreur... en fait elle vient de ma première boucle.
si je remplace office:document-content par root ou même par office:document-content xmlns:office="namespace", ça fonctionne mieux
J'ai mis le doigt dessus en lisant la doc de Python et de son module xml.etree.ElementTree.
Ce qui m'amène a une autre interrogation : quelqu'un a-t-il déjà eu a comparer les deux versions (Qt ou Python) pour traiter du XML ?
Partager