2011-07-11 125 views
3

我正在使用SimpleXMLElement方法來加載字符串,但它不起作用。我的代碼是:爲什麼SimpleXMLElement返回一個空對象?

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

而且後續代碼var_dump返回

object(SimpleXMLElement)#104 (0) { } 

的變量$內容correctedly設置好的填充,如果我贊同這個變種,這是結果:

<?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->事件摘要[0] - > DataHoraEvento,我什麼也沒得到。 –

+1

@ItaloAndré:你可能什麼都沒有,因爲你的文檔有一個默認的命名空間和命名空間SimpleXML導致脫髮。 – jasso

相關問題