Hr-xml et PHP

Résolu/Fermé
victoires Messages postés 118 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 3 juin 2016 - 19 janv. 2016 à 16:21
victoires Messages postés 118 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 3 juin 2016 - 21 janv. 2016 à 15:07
Bonjour,

J'ai un fichier XML normé hr-xml que je souhaite lire en php pour récupérer les données, certains balises ne sont pas récupérables.
Exemple contenu :
<PersonName>
<oa:GivenName>TOTO</oa:GivenName>
<FamilyName>TAT</FamilyName>
</PersonName>


code php :
$xml = simplexml_load_file($fichier); // objet PHP



l'objet PHP donne :
[PersonName] => SimpleXMLElement Object
(
[FamilyName] => Dupond
)


Ma question concerne la balise GivenName , est ce possible de le récupérer ?

Merci beaucoup d'avance
A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
20 janv. 2016 à 14:33
Salut,

Une solution possible en utilisant la méthode getNamespaces :
https://www.php.net/manual/fr/simplexmlelement.getnamespaces.php

Bonne journée
0
victoires Messages postés 118 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 3 juin 2016
Modifié par victoires le 21/01/2016 à 11:52
Bonjour,

merci beaucoup, j'ai réussi à récupérer la valeur de GivenName :
J'ai récupérer les namespaces :
$namespace = $xml->getDocNamespaces(true);

puis j'ai récupérer la valeur :
$prenom = $etatCivil->PersonName->children($namespace['oa']);


j'ai un petit souci avec d'autres valeurs de types, par exemple :
   <UserArea>
<pe:CentresInteret>
<CentreInteret>VTT</CentreInteret>
<CentreInteret>Tennis</CentreInteret>
<CentreInteret>Badminton</CentreInteret>
<CentreInteret>Golf</CentreInteret>
<CentreInteret>Basket</CentreInteret>
</pe:CentresInteret>
<pe:Langues>
<Langue>
<id>EN</id>
<InformationsComplementaires>complément</InformationsComplementaires>
<Niveau>Très bon</Niveau>
</Langue>
<Langue>
<id>DE</id>
<Niveau>Correct</Niveau>
</Langue>
</pe:Langues>
</UserArea>


je voulais récupérer les valeurs des langues et centres d'interets

voici mon code :
$langues = $xml->CandidateProfile->UserArea;
$child = $langues->children($namespace['pe']);
echo "<pre>";
var_dump($child->Langues);
echo "</pre>";

foreach($child->Langues as $key => $centres) {
var_dump($key);
}


le $key retourne un objet vide
object(SimpleXMLElement)#42 (0) {
}


avez-vous une idée comment bien récupérer ces valeurs ? Merci beaucoup d'avance

Bonne journée
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
21 janv. 2016 à 12:29
Il n'y a pas de clé lors d'un parcours d'un objet SimpleXMLElement car il ne s'agit pas d'un tableau php.
Pour l'instant tu ne récupères que les langues ($child->Langues). N'ayant pas ton code xml et php complet, j'ai utilisé l'exemple ci-dessous dont tu peux t'inspirer pour corriger ton code :
$xml = <<<XML
<?xml version="1.0" standalone="yes"?>
<UserArea xmlns:pe="http://example.org/ns">
<pe:CentresInteret>
<CentreInteret>VTT</CentreInteret>
<CentreInteret>Tennis</CentreInteret>
<CentreInteret>Badminton</CentreInteret>
<CentreInteret>Golf</CentreInteret>
<CentreInteret>Basket</CentreInteret>
</pe:CentresInteret>
<pe:Langues>
<Langue>
<id>EN</id>
<InformationsComplementaires>complement</InformationsComplementaires>
<Niveau>Tres bon</Niveau>
</Langue>
<Langue>
<id>DE</id>
<Niveau>Correct</Niveau>
</Langue>
</pe:Langues>
</UserArea>
XML;
 
$xml = new SimpleXMLElement($xml);

$namespace = $xml->getDocNamespaces(true);

$childUserArea = $xml->children($namespace['pe']);

echo '<pre>';
foreach($childUserArea as $LanguesOuCentres) {
	var_dump($LanguesOuCentres->children());
}
echo '</pre>';
0
victoires Messages postés 118 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 3 juin 2016 > Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022
21 janv. 2016 à 15:07
Merci beaucoup, ça fonctionne ;)
0