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>
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">&lt;b&gt;Texte en Français &lt;/b&gt;Lorem ipsum.</texte>
		</langue>
		<langue tag="uk">
			<texte tag="texte-1">English Title</texte>
			<texte tag="texte-2">&lt;b&gt;English Text &lt;/b&gt;Lorem ipsum dolor.</texte>
		</langue>
	</langues>
</page>
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.


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 ?

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 nœud principal nettoyée des ces caractères superflus
$type=trim(strtolower(str_replace($masque,"",substr($fichierXml,strrpos($fichierXml,"<")))));
Merci pour toute réponse.