从 HTTP 套接字响应中获取 XML 元素的值

Get value of XML element from a HTTP Socket response

我有一个控制器,它使用 HTTP 套接字发送请求,并以 xml 格式给出响应。我正在使用 cakephp 2.6。
这是我获取响应正文的代码:

    $HttpSocket = new HttpSocket();            
    $response = $HttpSocket->request($request);
    $resulthit = $response->body;

当我尝试打印响应正文时,它 return 在我的浏览器中是这样的:

-2201502101153512eFXcByWLUHvQmYC0EHMn2JVxcpyzozBcek uid dan pwd

但是当我查看页面的源代码时,我看到的是这样的:

<? xml version="1.0" ?>
  <PUSH>
   <STATUS>-2</STATUS>
   <SMSCMESSAGEID>20150210133953</SMSCMESSAGEID>
   <GUID>knDlIBuUZf6zixlhbbxxLoxhEUGZTWPD</GUID>
   <MSG>cek uid dan pwd</MSG>
  </PUSH>

如何获取上面 XML 元素的值?
我想要状态和 GUID。

我已经试过了:

$xml = new SimpleXMLElement($resulthit);

但我只在 return 中收到一个错误

 "String could not be parsed as XML"

您可以使用 CakePHP Xml class:CakePHP XML class

代码不能被解析为 XML 的原因是因为你有 < pre > 标签围绕它,我猜是因为你正在尝试调试($something)。

在控制器的顶部包括 XML class:

//First Load the Utility Class
App::uses('Xml', 'Utility');

在控制器操作中执行以下操作:

$this->autoRender = false;
pr(Xml::toArray(Xml::build($thexmlvariable)));

这样你就可以测试它然后你应该使用 ajax 布局(空白布局)。

最后我得出结论 xml 由于 'Spaces before processing instruction targets' 我从 Http 响应无效 我已经尝试使用另一个 'dummy file response' 和有效的 xml,它给了我想要的东西。