Après avoir fait des recherches sur SO et google pendant des heures maintenant ... J'espère obtenir de l'aide ici: (Je suis juste à un pas de l'exécution d'un regex pour enlever les espaces de noms complètement)Utilisation de xpath sur un objet PHP SimpleXML, namespaces SOAP + (ne fonctionne pas ..)
d'abord c'est le XML:
<?xml version="1.0" encoding="utf-16"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header xmlns="http://webservices.site.com/definitions">
<SessionId>0119A|1</SessionId>
</soap:Header>
<soap:Body>
<Security_AuthenticateReply xmlns="http://xml.site.com/QQ">
<processStatus>
<statusCode>P</statusCode>
</processStatus>
</Security_AuthenticateReply>
</soap:Body>
</soap:Envelope>
voici maintenant ce que mon code en PHP ressemble:
$response = simplexml_load_string($str ,NULL,
false, "http://schemas.xmlsoap.org/soap/envelope/");
// just making sure the name space is "registered"
// but I tested all examples also with this removed
$response->registerXPathNamespace("soap",
"http://schemas.xmlsoap.org/soap/envelope/");
$_res = $response->xpath('//soap:Header');
print_r($_res);
/*** result: simple query for the root "soap" namespace, this looks good! (so far..)
Array
(
[0] => SimpleXMLElement Object
(
[SessionId] => 0119A|1
)
)
***/
// now we query for the "SessionId" element in the XML
$_res = $response->xpath('//soap:Header/SessionId');
print_r($_res);
/*** result: this does not return anything!
Array
(
)
***/
// another approach
$_res = $response->xpath('//soap:Header/SessionId/text()');
print_r($_res);
/*** result: this does not return anything at all!
***/
// Finally, without using XPath this does work
$_res = $response->xpath('//soap:Header');
$_res = (string)$_res[0]->SessionId;
echo $_res;
/*** result: this worked
0119A|1
***/
Comment puis-je obtenir le SO Message AP travaillant avec XPATH ???
Merci, Roman
Le plus simple serait d'utiliser DOM au lieu de SimpleXML, mais je suppose que ce n'est pas une option? – Gordon
Je trouve que lorsque je change cette partie du XML: Pour: Le dit des requêtes XPath commencent à travailler .. Des pensées à ce sujet? mauvais format du XML ?? –