2011-07-11 7 views
3

SimpleXMLElementメソッドを使用して文字列をロードしていますが、機能しません。なぜSimpleXMLElementは空のオブジェクトを返しますか?

$xml = new SimpleXMLElement($content); 
var_dump($xml); 

そして、変数$コンテンツはcorrectedly settedと満たされている

object(SimpleXMLElement)#104 (0) { } 

のvar_dumpは、私はこのVARエコーた場合、これは結果であり、返されます:私のコードがある

<?xml version="1.0" encoding="utf-8" ?> 
<string xmlns="http://www.jadlog.com.br/JadlogWebService/services"> 
    <Jadlog_Tracking_Consultar> 
     <ND> 
      <Numero>10080780714284</Numero> 
      <Status>ENTREGUE</Status> 
      <DataHoraEntrega>16/06/2011</DataHoraEntrega> 
      <Recebedor>DIEGO OLIVEIRA CRUZ</Recebedor> 
      <Documento>0883473380</Documento> 
      <Evento> 
       <Codigo></Codigo> 
       <DataHoraEvento>10/06/2011 19:51</DataHoraEvento> 
       <Descricao>EMISSAO </Descricao> 
       <Observacao>CO SAO PAULO 08</Observacao> 
      </Evento> 
      <Evento> 
       <Codigo></Codigo> 
       <DataHoraEvento>10/06/2011 20:12</DataHoraEvento> 
       <Descricao>TRANSFERENCIA </Descricao> 
       <Observacao>TECA JAD SAO</Observacao> 
      </Evento> 
      <Evento> 
       <Codigo></Codigo> 
       <DataHoraEvento>10/06/2011 20:53</DataHoraEvento> 
       <Descricao>ENTRADA </Descricao> 
       <Observacao>TECA JAD SAO</Observacao> 
      </Evento> 
      <Evento> 
       <Codigo></Codigo> 
       <DataHoraEvento>10/06/2011 21:05</DataHoraEvento> 
       <Descricao>TRANSFERENCIA </Descricao> 
       <Observacao>FL JAD SALVADOR</Observacao> 
      </Evento> 
      <Evento> 
       <Codigo></Codigo> 
       <DataHoraEvento>12/06/2011 10:27</DataHoraEvento> 
       <Descricao>ENTRADA </Descricao> 
       <Observacao>FL JAD SALVADOR</Observacao> 
      </Evento> 
      <Evento> 
       <Codigo></Codigo> 
       <DataHoraEvento>12/06/2011 11:21</DataHoraEvento> 
       <Descricao>TRANSFERENCIA </Descricao> 
       <Observacao>CO SALVADOR 02</Observacao> 
      </Evento> 
      <Evento> 
       <Codigo></Codigo> 
       <DataHoraEvento>12/06/2011 11:25</DataHoraEvento> 
       <Descricao> ATRASO TRANSPORTE</Descricao> 
       <Observacao>FL JAD SALVADOR</Observacao> 
      </Evento> 
      <Evento> 
       <Codigo></Codigo> 
       <DataHoraEvento>12/06/2011 11:51</DataHoraEvento> 
       <Descricao>TRANSFERENCIA </Descricao> 
       <Observacao>CO SALVADOR 02</Observacao> 
      </Evento> 
      <Evento> 
       <Codigo></Codigo> 
       <DataHoraEvento>14/06/2011 14:28</DataHoraEvento> 
       <Descricao>ENTRADA </Descricao> 
       <Observacao>CO SALVADOR 02</Observacao> 
      </Evento> 
      <Evento> 
       <Codigo></Codigo> 
       <DataHoraEvento>14/06/2011 16:14</DataHoraEvento> 
       <Descricao>ENTRADA </Descricao> 
       <Observacao>CO SALVADOR 02</Observacao> 
      </Evento> 
      <Evento> 
       <Codigo></Codigo> 
       <DataHoraEvento>14/06/2011 18:10</DataHoraEvento> 
       <Descricao>EM ROTA </Descricao> 
       <Observacao>CO SALVADOR 02</Observacao> 
      </Evento> 
      <Evento> 
       <Codigo></Codigo> 
       <DataHoraEvento>16/06/2011 08:59</DataHoraEvento> 
       <Descricao>ENTREGUE </Descricao> 
       <Observacao>CO SALVADOR 02</Observacao> 
      </Evento> 
     </ND> 
    </Jadlog_Tracking_Consultar> 
</string> 

誰かがこれで私を助けることができますか?

+0

いいですか? – BoltClock

+2

バグ(または機能)はわかりませんが、文字列にキャストしてみてください。例えばvar_dump((文字列)$ xml);また、それが木全体をダンプすることを望むならば、望むのをやめるほうがよいでしょう。 – yoavmatchulsky

+0

@BoltClock私はそれが信じています。私はXMLに慣れていないので、わかりません。また、このXMLは私によって作成されたものではなく、Webサービスから動的に取得します。 –

答えて

2

Webサービスで問題が発生しましたが、SOAPオブジェクトが返されていましたが、ソースコード内でそれを確認できました。 XMLが正常に表示されていたので、私は要求に問題があるとは考えていませんでした。ソースコードをチェックし、Soapを使ってリクエストを処理した後、私はそれを把握することができました。 SimpleXMLはうまく機能します。

皆様のおかげです。

1

「空ではない」 - たとえば$xml->children();を試してください。私が知っている限り、SimpleXmlElementは他のPHPオブジェクトのように振る舞いません。その場合、var_dump(それは何らかの理由でprint_rと動作すると思いますが)そのメンバは表示されません。

+1

'var_dump'と' print_r'の両方があなたにいくつかのデータを与えようとしますが、SimpleXMLオブジェクトの背後に隠された "魔法の" APIのため、そこにあるすべてのものを常に表示するとは限りません。 – IMSoP

0

正常に動作しています。 XMLはちょうどオブジェクトに格納されています。他のオブジェクトと同様にアクセスできます。ですから、$ xmlの内容をダンプしているときは、それがオブジェクトであることがわかります。下記の例を参照してください。以下はランダムな例です。私はちょうどあなたに矢印を示したいと思った - >。

<?php  
$xml = new SimpleXMLElement($xmlstr); 

echo $xml->movie[0]->plot; 
?> 
+0

私はこの例に従いました。 (私はPHPのマニュアルページからXMLを入手しました) これは、私が使用しているXMLや要素を呼び出す方法に何らかのエラーがあることを意味します。 エコー$ xml-> Evento [0] - > DataHoraEventoを試しましたが、何も見つかりませんでした。 –

+1

@ItaloAndré:ドキュメントにデフォルト名前空間があり、名前空間SimpleXMLで脱毛が発生するため、おそらく何も得られません。 – jasso

関連する問題