SimpleXML et addChild
Posté : 19 juin 2013, 10:52
Bonjour,
Je met en place un script de connexion à un webservice interrogé en REST.
Le serveur sur lequel étant hébergé ce webservice disposant de certaines limitations en terme d'interrogation et parceque le flux XML renvoyé par le serveur étant inutilement alourdi, j'ai décidé, avant de mettre en cache sur mon propre serveur les information, de "réécrire" le flux XML.
Voici la partie du flux XML retourné après interrogation sur laquelle je bute :
Donc pour explication, on a dans deux parties distinctes dans lesquelles on retrouve des id de caracteristiques et dans une seconde partie le descriptif (avec un code de lanque "it" alors que c'est pas de l'italien... mais passons)
Je souhaite réécrire cette partie du flux de la façon suivante :
Voici le code que j'utilise pour constituer cette partie :
En dehors de l'encodage du flux récupéré qui part en sucette (faut que je me penche dessus), je n'arrive pas à faire en sorte que l'objet SimpleXML se construise de la façon dont je souhaite mon flux.
Une idée d'où vient le problème et comment y remédier ?
Merci
Je met en place un script de connexion à un webservice interrogé en REST.
Le serveur sur lequel étant hébergé ce webservice disposant de certaines limitations en terme d'interrogation et parceque le flux XML renvoyé par le serveur étant inutilement alourdi, j'ai décidé, avant de mettre en cache sur mon propre serveur les information, de "réécrire" le flux XML.
Voici la partie du flux XML retourné après interrogation sur laquelle je bute :
Code : Tout sélectionner
...
<CollectionCaracteristique>
<Caracteristique IdCaracteristique="25"/>
<Caracteristique IdCaracteristique="36"/>
<Caracteristique IdCaracteristique="41"/>
<Caracteristique IdCaracteristique="42"/>
</CollectionCaracteristique>
<CollectionComplement>
<Complement>
<Libelle>
<Contenus>
<Contenu IdLangue="it">Accès internet</Contenu>
</Contenus>
</Libelle>
</Complement>
<Complement>
<Libelle>
<Contenus>
<Contenu IdLangue="it">Anglais parlé</Contenu>
</Contenus>
</Libelle>
</Complement>
<Complement>
<Libelle>
<Contenus>
<Contenu IdLangue="it">Animations (Loisirs à  proximité)</Contenu>
</Contenus>
</Libelle>
</Complement>
<Complement>
<Libelle>
<Contenus>
<Contenu IdLangue="it">Animaux interdits</Contenu>
</Contenus>
</Libelle>
</Complement>
</CollectionComplement>
...Je souhaite réécrire cette partie du flux de la façon suivante :
Code : Tout sélectionner
...
<caracteristics>
<caracteristic id="25">texte</caracteristic>
<caracteristic id="36">texte</caracteristic>
<caracteristic id="41">texte</caracteristic>
<caracteristic id="42">texte</caracteristic>
</caracteristics>
...//Caracteristics node
$carId = array();
$carTexts = array();
foreach($node->CollectionCaracteristique->Caracteristique as $car)
$carId[] = $car->attributes()->IdCaracteristique;
foreach($node->CollectionComplement->Complement as $carText)
$carTexts[] = $carText->Libelle->Contenus->Contenu;
$car = $apt->addChild('caracteristics');
for($i = 0;$i < count($carId);$i++)
$car->addChild('caracteristic',$carTexts[$i])->addAttribute('id',$carId[$i]);
Et voici le XML généré (objet SimpleXML) :Code : Tout sélectionner
[caracteristics] => SimpleXMLElement Object
(
[caracteristic] => Array
(
[0] => Accès internet
[1] => Anglais parl├â┬®
[2] => Animations (Loisirs ├â┬á├é┬á proximit├â┬®)
[3] => Animaux interdits
)
)Une idée d'où vient le problème et comment y remédier ?
Merci