Précédent   Forum du club des développeurs et IT Pro > PHP > Bibliothèques et frameworks > XML
XML Forum d'entraide sur XML avec PHP. Exemples : SimpleXML, OpenXML... Avant de poster -> FAQ XML, Cours XML et Sources XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 29/12/2011, 16h05   #1
runner77
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 74
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 74
Points : 29
Points : 29
Par défaut Problème récupération valeur d'un noeud

Bonjour,

Sa fait des heures et des heures que je cherche dans les tutos et sur internet comment récupérer la valeur d'un noeud qui ne veux pas fonctionner.

Voici mon code PHP

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
$root_xml = new DOMDocument();
$root_xml->loadXML( base64_decode( $structure_qcm ) );
$root_node_xml = $root_xml->documentElement;
$titre_qcm = $root_node_xml->getAttribute( 'titre' );
$fils_root_xml = $root_node_xml->getElementsByTagName( 'question' );
$cpt_question = 0;
$cpt_reponse = 0;
foreach( $fils_root_xml as $node )
{
	$fils_reponse = $node->getElementsByTagName( 'rep' );
	$titre_question = $node->getAttribute( 'titre' );
	$titre_question = utf8_decode( $titre_question );
 
	$niveau_question = $node->getElementsByTagName('niveau');
	$niveau_question = $niveau_question->nodeValue;
 
        ....
}
Et voici une partie de mon XML

Code :
1
2
3
4
5
6
7
8
9
 
<questionnaire date="1325163135" titre="Essai questionnnaire" titre_plc="Traitement de texte" sous_titre_plc="">
  <question titre="ghgfhghd" num_quest="1">
    <niveau>Initiation</niveau>
    <rattachement> D&#xE9;finition et pr&#xE9;sentation du traitement de texte.</rattachement>
    <rep num_rep="1" flag="1">Oui</rep>
    <rep num_rep="2" flag="0">Non</rep>
    <rep num_rep="3" flag="0">Ne sais pas</rep>
  </question>
Comme vous l'auriez compris je cherche donc à récupérer la valeur "Initiation" de mon element "niveau".

Merci d'avance pour vos réponses
runner77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 18h52   #2
Séb.
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 974
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 974
Points : 3 685
Points : 3 685
Citation:
$niveau_question = $node->getElementsByTagName('niveau');
$niveau_question = $niveau_question->nodeValue;
Attention $niveau_question est un DOMNodeList.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 12h43   #3
runner77
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 74
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 74
Points : 29
Points : 29
Je n'ai donc pas d'autre choix que de faire ceci pour afficher la valeur de mon noeud ?

Code :
1
2
3
$niveau_question = $node->getElementsByTagName('niveau');
foreach( $niveau_question as $niveau )
	$niveau_de_la_question = $niveau->nodeValue;
runner77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 13h02   #4
Séb.
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 974
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 974
Points : 3 685
Points : 3 685
Citation:
Envoyé par runner77 Voir le message
Je n'ai donc pas d'autre choix que de faire ceci pour afficher la valeur de mon noeud ?

Code :
1
2
3
$niveau_question = $node->getElementsByTagName('niveau');
foreach( $niveau_question as $niveau )
	$niveau_de_la_question = $niveau->nodeValue;
Si tu as {0,n} noeuds c'est bon.
Si tu as {1,n} noeuds tu peux afficher le 1er en faisant :

Code :
echo $node->getElementsByTagName('niveau')->item(0)->nodeValue ;
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/12/2011, 14h07   #5
runner77
Nouveau Membre du Club
 
Inscription : décembre 2008
Messages : 74
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 74
Points : 29
Points : 29
Ah super cool.
Merci beaucoup, j'ai effectivement qu'un seul noeud "niveau" c'est ce que je cherchais.
runner77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h25.


 
 
 
 
Partenaires

Hébergement Web