首页 > 解决方案 > 想要同时提取从以下 XML 响应中使用 PHP

问题描述

我有一个 SMS API,并且想要使用 PHP 提取所有传出 SMS 的 XML 响应,请指导我的朋友。这是我的 API 响应

<response xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<action>sendmessage</action>
<data>
  <acceptreport>
  <statuscode>0</statuscode>
  <statusmessage>Message accepted for delivery</statusmessage>
  <messageid>223639802</messageid>
  <originator>88434</originator>
  <recipient>923336458112</recipient>
  <messagetype>SMS:TEXT</messagetype>
  <messagedata>testing by JAved for DLS</messagedata>
</acceptreport>
<acceptreport>
  <statuscode>0</statuscode>
  <statusmessage>Message accepted for delivery</statusmessage>
  <messageid>223639803</messageid>
  <originator>88434</originator>
  <recipient>923497105188</recipient>
  <messagetype>SMS:TEXT</messagetype>
  <messagedata>testing by JAved for DLS</messagedata>
</acceptreport>
</data>
</response>

标签: phpxmlresponse

解决方案


请阅读上面的评论,至少下次尝试自己解决问题。这应该可以解决您的问题:

<?php


$xmlstr = '<response xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                                <action>sendmessage</action>
                                <data>
                                <acceptreport>
                                  <statuscode>0</statuscode>
                                  <statusmessage>Message accepted for delivery</statusmessage>
                                  <messageid>223639802</messageid>
                                  <originator>88434</originator>
                                  <recipient>923336458112</recipient>
                                  <messagetype>SMS:TEXT</messagetype>
                                  <messagedata>testing by JAved for DLS</messagedata>
                                </acceptreport>
                                <acceptreport>
                                  <statuscode>0</statuscode>
                                  <statusmessage>Message accepted for delivery</statusmessage>
                                  <messageid>223639803</messageid>
                                  <originator>88434</originator>
                                  <recipient>923497105188</recipient>
                                  <messagetype>SMS:TEXT</messagetype>
                                  <messagedata>testing by JAved for DLS</messagedata>
                                </acceptreport>
                                </data>
                                </response>';




$xml = new SimpleXMLElement($xmlstr);

echo $xml->data->acceptreport->messageid;

我还注意到您的 xml 中缺少“响应”结束标记,因此这可能是您遇到的问题。我在这个例子中添加了它。


推荐阅读