Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/09/2011, 18h07   #1
Membre confirmé
 
Avatar de schwarzy2
 
Femme Raphaelle Simonney
Développeur Web
Inscription : septembre 2006
Messages : 454
Détails du profil
Informations personnelles :
Nom : Femme Raphaelle Simonney
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2006
Messages : 454
Points : 256
Points : 256
Par défaut lecture d'une chaîne xml

Bonjour à tous,

je ne réussis pas à récupérer certains éléments de ma chaîne xml, pour d'autres pourtant aucun problème. J'utilise la fonction simplexml_load_string:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$retour='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
<response>
	<result code="1000"><msg>Command completed successfully</msg></result>
	<resData><domain:chkData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
		<domain:cd>
			<domain:name avail="0">musees-senlis.fr</domain:name>
			<domain:reason>In use</domain:reason>
		</domain:cd>
	</domain:chkData></resData>
 
	<extension>
		<frnic:ext xmlns:frnic="http://www.afnic.fr/xml/epp/frnic-1.0">
			<frnic:resData>
				<frnic:chkData>
					<frnic:domain>
						<frnic:cd>
							<frnic:name reserved="0" forbidden="0">musees-senlis.fr</frnic:name>
						</frnic:cd>
					</frnic:domain>
				</frnic:chkData>
			</frnic:resData>
		</frnic:ext>
	</extension>
	<trID>
		<clTRID>PJAFNIC</clTRID>
		<svTRID>SANDBOX-kenobi-25082-142-1316003419.93145</svTRID>
	</trID>
</response></epp>';
 
$retour_xml=simplexml_load_string($retour);
$code=$retour_xml[0]->response->result['code'][0]; //ok tout va bien
$resData=$retour_xml[0]->response->resData;
 
print_r($resData); //SimpleXMLElement Object ( ) ;
$resData est un Objet vide, je ne réussis donc pas à récupérer la valeur avail du domaine.

J'ai essayé différents fonctions, dont des fonctions Zend, puisque je suis sous Zend, Zend_Config_Xml, Zend_Json::fromXml() , mais rien ne marche.

L'un de vous aurait-il une idée? Parce que là, je ne vois rien, tous les parsers que je rencontre sont des parsers de fichier,s et non pas de chaines...

merci d'avance pour votre aide

schwarzy2
__________________
Feel good, feel geek
schwarzy2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 22h30   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
Parce que tu recherches les éléments de l'espace de nom par défaut.
Utilise SimpleXMLElement::children( ) pour récupérer les éléments d'un espace de nom donné.
http://fr2.php.net/manual/en/simplex...t.children.php
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 11h41   #3
Membre confirmé
 
Avatar de schwarzy2
 
Femme Raphaelle Simonney
Développeur Web
Inscription : septembre 2006
Messages : 454
Détails du profil
Informations personnelles :
Nom : Femme Raphaelle Simonney
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2006
Messages : 454
Points : 256
Points : 256
Par défaut ne marche pas

Merci pour ta réponse, mais non, ça non plus ça ne fonctionne pas. Je ne réussis même pas en utilisant cette fonction à récupérer la valeur de mon code de result, (ce que je réussis à faire en SimpleXLElement)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$xml=new SimpleXMLElement($retour);
           foreach ($xml->children() as $second_gen) {
var_dump($second_gen);
 echo ' The xml begot a ' . $second_gen['role'];
               foreach ($second_gen->children() as $third_gen) {
                   var_dump($third_gen);
                   echo ' whot begot a ' . $third_gen['role'];
                  /*
                   foreach ($third_gen->children() as $four_gen) {
                       var_dump($four_gen);
                       echo ' The xml a ' . $third_gen['resData'];
                   }*/
               }
           }
Je vois au niveau 1 que l'un des enfants est resData, mais arrivé au niveau 2, aucun enfant n'apparaît à l'intérieur de resData, j'ai essayé différentes manières, en ajoutant des paramètres, en essayant d'afficher les valeurs de éléments...
Code :
1
2
3
4
foreach ($third_gen->children('domain') as $four_gen) {
                       var_dump($four_gen);
                       echo ' The xml a ' . $third_gen['resData'];
                   }
Rien ne fonctionne, je ne réussis pas à récupérer la valeur des éléments qui se trouvent à l'intérieur de resData.

Je suis obligée d'utiliser une REGEX?
__________________
Feel good, feel geek
schwarzy2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 16h57   #4
Membre confirmé
 
Avatar de schwarzy2
 
Femme Raphaelle Simonney
Développeur Web
Inscription : septembre 2006
Messages : 454
Détails du profil
Informations personnelles :
Nom : Femme Raphaelle Simonney
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2006
Messages : 454
Points : 256
Points : 256
Par défaut merci à l'AFUP

ben l'AFUP m'a donné la solution , je la mets là:

Code :
1
2
3
$xml=new SimpleXMLElement($retour);
$attributs=$xml->response->resData->children("urn:ietf:params:xml:ns:domain-1.0")->chkData->cd->name->attributes();
echo $attributs['avail'];
bonne soirée à tous
__________________
Feel good, feel geek
schwarzy2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2011, 17h00   #5
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
Citation:
ben l'AFUP m'a donné la solution , je la mets là:
<jaloux>C'est moi qui t'ai donné la soluce, après faut lire la doc </jaloux>
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h55.


 
 
 
 
Partenaires

Hébergement Web