Salut,
Donc si j'ai bien compris le traitement efféctué par cette classe s'arrete tous simplement au parsing.
Ben oui, puisque tu dis :
je cherche desespérement une classe php générique pour parser tout type de ficher XML
La forme du fichier xml peut changé en tout moment , dans ce cas ce que je veux c'est de ne pas modifier la class à chaque fois que la structure des balises du fichier XML change ou c'est impossible ?
Ben... Il n'est pas possible de créer une classe (ou n'importe quoi) qui soit capable de s'adapter à quelque chose qu'on ne connaît pas d'avance. Le principe d'un progamme, c'est justement d'être programme : ça veut bien dire qu'il faut prévoir les traitement qu'il devra effectuer.
Donc à moins de savoir précisément comment la structure du fichier XML peut évoluer, non, ce n'est pas possible.
Ce qu'il est possible de faire, sans connaître les changements futurs, c'est une classe qui va récupérer certaines informations dans le fichier XML. Ainsi, cette classe peut avoir des méthodes "génériques" pour la récupération de données, qui pourront être réécrites plus tard si la structure du fichier XML change. Par exemple, une méthode getClients() qui retournera la liste des clients, dans un format donné (fixe, déterminé et immuable) qui sera traité toujours de la même façon. C'est alors le rôle de cette méthode d'aller chercher les clients dans le XML et de mettre le résultat en forme pour qu'il soit utilisable en toute circonstance dans le reste du programme. Ainsi, si la structure du XML change, la méthode est réécrite (de façon a toujours récupérer la liste des clients), mais le reste du code, quant à lui, ne change pas, parce que ce que cette méthode renvoit ne change pas.
On peut ainsi imaginer une classe "générique", abstraite, qui définit les méthodes nécessaires au bon fonctionnement du programme et une ou plusieurs classe (concrètes) spécifiques au format du XML.
L'idée est de reproduire le principe de PDO : une classe PDO qui peut implémenter plusieurs classes d'accès à différents SGBDR, sans qu'il soit nécessaire de modifier le code de son programme si on change de SGBDR : on exécute toujours la méthode PDO::query() pour exécuter une requête etc.
Pour continuer l'analogie, c'est comme si un format de XML était un SGBDR différent : on utilise une classe spécifique.
PHP ne fournit que des outils pour parser du XML. La manière de parser et l'accès aux données ne peut pas être générique et dépend de la structure du fichier XML source, de l'utilisation qui est faite des données, etc. C'est donc au développeur de créer des outils qui lui permettent d'avoir cette souplesse. En y pensant correctement au début, on peut aboutir à une classe dont seul le contenu des méthodes sera modifié, n'impactant ainsi pas le reste du programme.
--
Neige
Souvent la réponse à votre question se trouve dans la
doc. Commencez par là ;)