Bonjour à tous,
N’ayant pas trouvé de solution, je me permets de poser la question ici.
Est il possible avec simpleXML de retrouver le nom de la balise racine d'un document.
Je dois pouvoir sélectionner un type de traitement en fonction du fichier xml chargé.
Le traitement est conditionné par le nom de balise de la racine.
Exemple de fichiers xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10<?xml version="1.0" encoding="ISO-8859-1" ?> <message> <posts> <post> <auteur>Toto</auteur> <date>12/03/2010</date> <texte>Test de texte</texte> </post> </posts> </message>
Je dois pouvoir identifier dans le cas du premier fichier "message" et dans le cas du deuxième "page" afin de sélectionner le traitement correspondant.
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<?xml version="1.0" encoding="ISO-8859-1" ?> <page> <images> <image tag="image-1" large="360">Datas/BoulangerieEte2004.jpg</image> <image tag="image-2">Datas/BoulangerieEte2005.jpg</image> </images> <langues> <langue tag="fr"> <texte tag="texte-1">Titre en français</texte> <texte tag="texte-2"><b>Texte en Français </b>Lorem ipsum.</texte> </langue> <langue tag="uk"> <texte tag="texte-1">English Title</texte> <texte tag="texte-2"><b>English Text </b>Lorem ipsum dolor.</texte> </langue> </langues> </page>
J’ai bien trouvé une solution mais elle ne me parait pas élégante, je voudrai votre avis sur le sujet, existe-t-il une meilleur façon de procéder ?
Merci pour toute réponse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 // Charger le fichier xml dans une chaine - $xml est le résultat d'un simplexml_load_file() $fichierXml=$xml->asXML(); // Définir les caractères à supprimer $masque=array("<","/",">"); // Récupérer la balise de fermeture du nud principal nettoyée des ces caractères superflus $type=trim(strtolower(str_replace($masque,"",substr($fichierXml,strrpos($fichierXml,"<")))));
Partager