0

私はXMLをphpするのが初めてです。さらに、ここでこのトピックに関する多くのスレッドを調べました。

多少のズレがあるかもしれませんが、読めません。

これが、スレッドの1つに従ってそれを読むために私がしていることです。

        //parse xml string into SimpleXML objects
        $returnxml = simplexml_load_string($result);

        if ($returnxml === false) {
            die('Error parsing Return XML');
        }

        //now we can loop through the xml structure
        foreach ($returnxml->channel->item as $item) {
            print $item->title;
        }

上記のコードを使用しても何も得られません

CURL を使用した実際の [EXACT] XML 応答は次のとおりです。

<?xml version="1.0" encoding="ISO-8859-1"?>
&lt;ncresponse

orderID="120130414021640"

PAYID="BESALDOM 516A65F5E5E"

STATUS="4"

NCSTATUS="0"

NCERROR=""

NCERRORPLUS="Your transaction has been submitted for processing."

ACCEPTANCE="BINF-"

IPCTY=""

CCCTY=""

IDUsager="7884TSMA"

/&gt;

次に、これは私が使用している 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);

事前に感謝します。どんな助けでも大歓迎です...

4

2 に答える 2

1

Adidi正しく指摘したように、提供された情報を適切な場所から取得しようとしているわけではありません。必要な情報はルート ノードにあり、属性として保存されます。これらを取得する方法を示す簡単な例を次に示します。

<?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"
    }
*/
于 2013-04-14T10:17:33.210 に答える
0

シンプルなロードxmlファイル..

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

$status = (string)$xml->Status; 
$operator_trans_id = (string)$xml->OPID;
$trns_id = (string)$xml->TID;
于 2015-07-22T06:14:36.320 に答える