2011-07-11 120 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

相关问题