【问题标题】:XML > PHP only in source codeXML > PHP 仅在源代码中
【发布时间】:2011-09-03 22:09:48
【问题描述】:

我有一个小问题,我用于部分服务的 API 使用 rsp stat 来处理 XML 中的成功/错误消息。

所以我们使用表单来发布数据,它会返回数据,如下例所示:

以下是使用的大部分脚本:

$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); // ToDo: 用您的数据替换括号中的占位符。 // 例如 - curl_setopt($ch, CURLOPT_UserERPWD, 'SMSUser:PassW0rD#'); curl_setopt($ch, CURLOPT_USERPWD, ''); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 100); $xml = curl_exec($ch); if (curl_error($ch)) { 打印“错误”。 curl_error($ch) ."\n
"; } curl_close($ch); print_r($xml);

唯一的问题是,当它通过 print_r 命令解析和显示时,由于某种奇怪的原因,它只能通过源代码显示,我们不知道如何通过页面显示它

基本上我们想要一个系统,如果 rsp stat="ok" 然后 "Sent" 否则 "unsent"。

【问题讨论】:

    标签: php xml


    【解决方案1】:

    如果你这样做:

    (另见CodePad.org

    function xmlRequestWasSuccessful($xml) {
        $result = simplexml_load_string($xml);
        $result = (string)$result['stat'];
        if ($result == 'ok') {
            return true;
        } else {
            return false;
        }
    }
    
    $xml = '<rsp stat="ok">
    <success msg="accepted" transactionid="505eeb9c43969d4919c0a6b3f7a4dfbb" messageid="a92eff8d65cf48e9c6e96702a7b07400"/>
    </rsp>';
    
    $stat = xmlRequestWasSuccessful($xml);
    

    您将在结果中收到“真”布尔值($stat 变量)。调整它以支持出现错误时的情况。由于没有详细说明发生错误时的外观,因此您现在可以这样做:

    if ($stat) {
        // do something on success ('sent' something)
    } else {
        // do something on success (display 'unsent' message for example)
    }
    

    【讨论】:

      【解决方案2】:

      将该代码放入一个函数中,并让该函数返回您的 $xml。

      假设你有一个名为 getRspStat() 的函数,你可以这样做:

            echo getRspStat();
      

      【讨论】:

        【解决方案3】:

        嗯,一个简单的方法可能是:

        if (strpos($xml, 'stat="ok"') !== false) {
            echo "sent";
        } else {
            echo "unsent";
        }
        

        http://codepad.org/pkzsfsMk

        这将替换print($xml);

        【讨论】:

        • if((@DOMDocument::loadHTML($xml))->getElementsByTagName("rsp")->item(0)->getAttribute("stat")==='ok') {echo 'sent';}else{echo 'unsent';throw new \RuntimException('unexpected stat response: '.(@DOMDocument::loadHTML($xml))->getElementsByTagName("rsp")->item(0 )->getAttribute("stat"));}
        猜你喜欢
        • 2011-09-14
        • 1970-01-01
        • 2014-09-09
        • 1970-01-01
        • 2011-06-22
        • 2013-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多