2011-08-02 9 views
0

単純なxml石鹸応答をsimplexml_load_stringで解析しようとしていますが、成功することはありません。私はすでに成功していない他の質問で見つけた多くの方法を試しました。SOAP XMLでのsimplexml_load_stringの解析

XMLは次のとおりです。

<?xml version="1.0" encoding="utf-8" ?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Body> 
    <m:F2bCobrancaRetorno xmlns:m="http://www.f2b.com.br/soap/wsbilling.xsd"> 
     <sacado numero="0000000015"> 
     <nome>Pedro Fernandes Steimbruch</nome> 
     <email>[email protected]</email> 
     </sacado> 
     <cobranca nosso_numero="0004912903" numero="0004912903" taxa_registro="0.00"> 
     <nome>Pedro Fernandes Steimbruch</nome> 
     <email>[email protected]</email> 
     <url>http://www.f2b.com.br/Billing?id=eq5GuK</url> 
     </cobranca> 
     <log>OK&#13;</log> 
    </m:F2bCobrancaRetorno> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

は、私がログインしてURLオブジェクトを取得したいです。

+0

あなたはここにいくつかのXMLを貼り付けただけですが、これまでに試したことはあなたのコードを示していません。 -1 + CV – hakre

答えて

0

あなたはそれを考慮しているかもしれませんが、そのXML文書は名前空間を使用しています。これがXMLタグのコロンの意味です。この文書で与えられたURIは、パーサーに、理論的には、その名前空間内の要素のスキーマを見つける場所を指示します。これをsimpleXmlで行うには、その名前空間のURIを取得するためにファイルを解析する必要があります。この場合、単純にハードコーディングする必要があります。つまり、 "http://www.f2b.com.br/soap/wsbilling.xsd" 。次に、URIをSimpleXmlオブジェクトのchildren()メソッドに渡します。

この例では、$ documentにはSOAPデータを含むSimpleXMLオブジェクトが含まれています。 $ subDocumentは、名前空間 "m"にある文書の要素を含む新しいSimpleXML文書です。

$subDocument = $document->children("http://www.f2b.com.br/soap/wsbilling.xsd"); 
    echo $subDocument->log; 

2つの名前空間(SOAP_ENVおよびメートル)、他の中にネスト1があるので、私はあなたが「M」にアクセスできる前に、「SOAP-ENV」にアクセスしなければならない場合は知っている場合、またはしないでくださいまっすぐ "m"にジャンプすることができます。

このページでは、このページについて説明します。 http://www.sitepoint.com/simplexml-and-namespaces/