想要使用 PHP 从以下 XML 响应中提取两者 <messageid>

Want to Extract Both <messageid> using PHP from following XML response

我有一条 SMS API,并且得到 XML 响应想要提取所有使用 PHP 的外发 SMS,请指导我朋友。 这是我的 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>

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

<?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 中缺少一个 "response" 结束标记,所以这可能是您遇到的问题。我在这个例子中添加了它。