J'ai ce XML moche qui a beaucoup d'espaces de noms dessus, quand j'essaie de le charger avec simpleXML si j'indique le premier espace de noms j'obtiendrais un objet xml, mais les balises suivantes avec d'autres espaces de noms ne le ferait pas à l'objet.analyser un XML avec SimpleXML qui a plusieurs espaces de noms
Comment puis-je analyser ce XML?
<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<eb:MessageHeader xmlns:eb="http://www.ebxml.org/namespaces/messageHeader" eb:version="1.0" soap-env:mustUnderstand="1">
<eb:From>
<eb:PartyId eb:type="URI">wscompany.com</eb:PartyId>
</eb:From>
<eb:To>
<eb:PartyId eb:type="URI">mysite.com</eb:PartyId>
</eb:To>
<eb:CPAId>something</eb:CPAId>
<eb:ConversationId>moredata.com</eb:ConversationId>
<eb:Service eb:type="compXML">theservice</eb:Service>
<eb:Action>theaction</eb:Action>
<eb:MessageData>
<eb:MessageId>a certain messageid</eb:MessageId>
<eb:Timestamp>2009-04-11T18:43:58</eb:Timestamp>
<eb:RefToMessageId>mid:areference</eb:RefToMessageId>
</eb:MessageData>
</eb:MessageHeader>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext">
<wsse:BinarySecurityToken valueType="String" EncodingType="wsse:Base64Binary">an impresive binary security toekn</wsse:BinarySecurityToken>
</wsse:Security>
</soap-env:Header>
<soap-env:Body>
<SessionCreateRS xmlns="http://www.opentravel.org/OTA/2002/11" version="1" status="Approved">
<ConversationId>the goodbye token</ConversationId>
</SessionCreateRS>
</soap-env:Body>
</soap-env:Envelope>
im essayant d'analyser avec le code suivant
<?php
$xml = simplexml_load_string($res,NULL,NULL,"http://schemas.xmlsoap.org/soap/envelope/");
?>
mais l'objet $ xml ne contiendrait les éléments suivants
SimpleXMLElement Object
(
[Header] => SimpleXMLElement Object
(
)
[Body] => SimpleXMLElement Object
(
)
)
simplement vous BRILLIAN non seulement aidé à résoudre mon problème, mais aussi indiqué clairement comment XPath a travaillé :) merci! – perrohunter
Il n'est pas nécessaire de basculer vers XPath simplement parce que vous utilisez des espaces de noms. – IMSoP
Si vous utilisez XPath, vous devez enregistrer explicitement les espaces de noms comme dans le code ci-dessus, sinon un échec se produit. – Bobulous