将数据发布到外部服务器后PHP读取XML响应

将数据发布到外部服务器后PHP读取XML响应,php,xml,curl,xml-parsing,Php,Xml,Curl,Xml Parsing,我不熟悉php和XML。另外,我在这里已经讨论了很多关于这个话题的话题 可能有点小故障,但我看不懂 下面是我按照其中一条线索阅读的步骤。 我没有得到任何使用上述代码 下面是使用CURL的实际[精确]XML响应 提前感谢,我们将非常感谢您提供的任何帮助……正确地说,您没有试图从正确的位置获取提供给您的信息。您需要的信息存储在根节点中,以下是一个快速示例,演示如何获取这些信息:- <?php function parse_response($response) { $xml = ne

我不熟悉php和XML。另外,我在这里已经讨论了很多关于这个话题的话题

可能有点小故障,但我看不懂

下面是我按照其中一条线索阅读的步骤。 我没有得到任何使用上述代码 下面是使用CURL的实际[精确]XML响应
提前感谢,我们将非常感谢您提供的任何帮助……

正确地说,您没有试图从正确的位置获取提供给您的信息。您需要的信息存储在根节点中,以下是一个快速示例,演示如何获取这些信息:-

<?php
function parse_response($response) {
    $xml = new SimpleXMLElement($response);
    $arr = array();
    foreach($xml->attributes() as $key => $value) {
        $arr[(string)$key] = (string)$value;
    }
    return $arr;
}

var_dump(parse_response($str));
/*
    array(10) {
      ["orderID"]=>
      string(15) "120130414021640"
      ["PAYID"]=>
      string(20) "BESALDOM 516A65F5E5E"
      ["STATUS"]=>
      string(1) "4"
      ["NCSTATUS"]=>
      string(1) "0"
      ["NCERROR"]=>
      string(0) ""
      ["NCERRORPLUS"]=>
      string(51) "Your transaction has been submitted for processing."
      ["ACCEPTANCE"]=>
      string(5) "BINF-"
      ["IPCTY"]=>
      string(0) ""
      ["CCCTY"]=>
      string(0) ""
      ["IDUsager"]=>
      string(8) "7884TSMA"
    }
*/
attributes()作为$key=>$value){
$arr[(字符串)$key]=(字符串)$value;
}
返回$arr;
}
变量转储(解析响应($str));
/*
阵列(10){
[“订单ID”]=>
串(15)“120130414021640”
[“PAYID”]=>
串(20)“BESALDOM 516A65F5E5E”
[“状态”]=>
字符串(1)“4”
[“NCSTATUS”]=>
字符串(1)“0”
[“NCERROR”]=>
字符串(0)”
[“NCERRORPLUS”]=>
字符串(51)“您的交易已提交处理。”
[“接受”]=>
字符串(5)“BINF-”
[“IPCTY”]=>
字符串(0)”
[“CCCTY”]=>
字符串(0)”
[“IDUsager”]=>
串(8)“7884TSMA”
}
*/

简单加载xml文件

<?php
$xml = @simplexml_load_string($result);

$status = (string)$xml->Status; 
$operator_trans_id = (string)$xml->OPID;
$trns_id = (string)$xml->TID;
状态;
$operator\u trans\u id=(字符串)$xml->OPID;
$trns_id=(字符串)$xml->TID;

返回xml是一个节点,您试图使用
$returnxml->channel
循环它-您在响应频道中看到了什么?@aditi:我不知道您在说什么。我只想阅读这个特定的xml。请仔细检查您称之为精确curl响应的部分的格式。让自己对编辑工具更熟悉一点,在当前的形式下,你的问题是什么,它是否是XML或什么都不清楚。它确实有效,请更加努力。您是否以字符串形式获取响应并将其传递到
parse_response
函数中?我将传递CURL以$result返回的响应。我没有添加任何转换函数。接下来,我尝试按原样使用您的函数,它甚至不像您的示例那样转储任何内容。最后,它成功了。响应甚至不是xml。我像读字符串一样读,结果出来了。感谢您的帮助使用Curl函数返回的响应
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL, $this->omnipayment_action_url);
    curl_setopt($ch,CURLOPT_POST, count($myorder));
    curl_setopt($ch,CURLOPT_POSTFIELDS, $flds);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    $result = curl_exec($ch);
    curl_close($ch);
<?php
function parse_response($response) {
    $xml = new SimpleXMLElement($response);
    $arr = array();
    foreach($xml->attributes() as $key => $value) {
        $arr[(string)$key] = (string)$value;
    }
    return $arr;
}

var_dump(parse_response($str));
/*
    array(10) {
      ["orderID"]=>
      string(15) "120130414021640"
      ["PAYID"]=>
      string(20) "BESALDOM 516A65F5E5E"
      ["STATUS"]=>
      string(1) "4"
      ["NCSTATUS"]=>
      string(1) "0"
      ["NCERROR"]=>
      string(0) ""
      ["NCERRORPLUS"]=>
      string(51) "Your transaction has been submitted for processing."
      ["ACCEPTANCE"]=>
      string(5) "BINF-"
      ["IPCTY"]=>
      string(0) ""
      ["CCCTY"]=>
      string(0) ""
      ["IDUsager"]=>
      string(8) "7884TSMA"
    }
*/
<?php
$xml = @simplexml_load_string($result);

$status = (string)$xml->Status; 
$operator_trans_id = (string)$xml->OPID;
$trns_id = (string)$xml->TID;