Hr-xml et PHP
Résolu
victoires
Messages postés
141
Statut
Membre
-
victoires Messages postés 141 Statut Membre -
victoires Messages postés 141 Statut Membre -
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 :
code php :
l'objet PHP donne :
Ma question concerne la balise GivenName , est ce possible de le récupérer ?
Merci beaucoup d'avance
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
1 réponse
-
Salut,
Une solution possible en utilisant la méthode getNamespaces :
https://www.php.net/manual/fr/simplexmlelement.getnamespaces.php
Bonne journée-
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 videobject(SimpleXMLElement)#42 (0) {
}
avez-vous une idée comment bien récupérer ces valeurs ? Merci beaucoup d'avance
Bonne journée -
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>';
-