PHP + simpleXML
Karai83
Messages postés
33
Date d'inscription
Statut
Membre
Dernière intervention
-
AdilATX -
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 ...
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:
- PHP + simpleXML
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP