PHP + simpleXML

Karai83 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   -  
 AdilATX -
Bonjour,
J'envisage d'utiliser simpleXML pour manipuler (lecture seule) des données
XML. Ces données appartiennent à *plusieurs* namespaces.
Quand j'utilise la méthode simplexml_load_string(...), il semblerait que je ne
puisse accéder qu'à du contenu appartenant à *un seul* namespace.

Par exemple :
<?xml version="1.0"?>
<samlp:Response
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="_fa9b6e0673e54c0e73a1428a0dbde01eaaa19b80e6"
InResponseTo="_0be59f829aed7e33452a600ec98500cd"
Version="2.0" [...] >
<saml:Issuer
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">idp.example.org</saml:Issuer>
<samlp:Status xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<samlp:StatusCode
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
</samlp:Status>
<saml:Assertion>
[...]
</saml:Assertion>
</samlp:Response>

Si je fais un :
$xml = simplexml_load_string($moXML, null, null,
"urn:oasis:names:tc:SAML:2.0:protocol");

j'ai bien accès au nœud <samlp:StatusCode ...>, mais comme son attribut
"Value" n'appartient pas au même NameSpace, je ne peux pas y accéder avec une
ligne du style :

$_status = (string)$xml->{'Status '}->{'StatusCode'}['Value'];

Quelqu'un connait la solution pour préciser plusieurs namespaces ? Ou procéder
autrement ? Sachant que j'exclus d'utiliser systématiquement des filtres xpath
, couteux, et que je préfère éviter une manipulation de DOM, un peu lourde
pour mon besoin ...
A voir également:

1 réponse

AdilATX
 
Bonjour,

Moi aussi j'ai le même problème, est ce que tu as pu trouver une solution?

Merci.
0