簡體   English   中英

PHP->卷曲->肥皂響應(從xml標簽獲取數據)

[英]PHP -> Curl -> Soap Response (Get data from xml tags)

我有一個Soap XML數據的Curl響應。

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/><SOAP-ENV:Body><ns2:GetAccountMovementsResponseIo xmlns:ns2="http://www.mygemini.com/schemas/mygemini">
<ns2:result>
    <ns2:pager>
        <ns2:pageIndex>0</ns2:pageIndex>
        <ns2:pageSize>700</ns2:pageSize>
    </ns2:pager>
    <ns2:totalCount>3</ns2:totalCount>
</ns2:result>
<ns2:accountMovement>
    <ns2:movementId>002147575330.2</ns2:movementId>
    <ns2:paymentId>95694091</ns2:paymentId>
    <ns2:externalPaymentId>2147575330</ns2:externalPaymentId>
    <ns2:debitCredit>1</ns2:debitCredit>
    <ns2:valueDate>2018-12-13T00:00:00+04:00</ns2:valueDate>
    <ns2:description>გადარიცხვა პირად ანგარიშზე</ns2:description>
    <ns2:amount>
        <ns2:amount>10000</ns2:amount>
        <ns2:currency>GEL</ns2:currency>
    </ns2:amount>
    <ns2:accountNumber>GE44TB7142536020100005</ns2:accountNumber>
    <ns2:accountName>კლიენტი:1425</ns2:accountName>
    <ns2:additionalInformation>კლიენტი:1425, 123456786, TBCBGE22, GE17TB7142536020100006</ns2:additionalInformation>
    <ns2:documentDate>2018-12-13T00:00:00+04:00</ns2:documentDate>
    <ns2:documentNumber>1544698824</ns2:documentNumber>
    <ns2:partnerAccountNumber>GE17TB7142536020100006</ns2:partnerAccountNumber>
    <ns2:partnerName>კლიენტი:1425, 123456786</ns2:partnerName>
    <ns2:partnerTaxCode>123456786</ns2:partnerTaxCode>
    <ns2:partnerBankCode>TBCBGE22</ns2:partnerBankCode>
    <ns2:partnerBank>სს  თიბისი  ბანკი</ns2:partnerBank>
    <ns2:taxpayerCode>123456786</ns2:taxpayerCode>
    <ns2:taxpayerName>კლიენტი:1425, 123456786</ns2:taxpayerName>
    <ns2:operationCode>GII</ns2:operationCode>
    <ns2:partnerDocumentType>0</ns2:partnerDocumentType>
    <ns2:statusCode>3</ns2:statusCode>
    <ns2:transactionType>1</ns2:transactionType>
</ns2:accountMovement>
<ns2:accountMovement>
    <ns2:movementId>002147575330.1</ns2:movementId>
    <ns2:paymentId>95694091</ns2:paymentId>
    <ns2:externalPaymentId>2147575330</ns2:externalPaymentId>
    <ns2:debitCredit>0</ns2:debitCredit>
    <ns2:valueDate>2018-12-13T00:00:00+04:00</ns2:valueDate>
    <ns2:description>გადარიცხვა პირად ანგარიშზე</ns2:description>
    <ns2:amount>
        <ns2:amount>10000</ns2:amount>
        <ns2:currency>GEL</ns2:currency>
    </ns2:amount>
    <ns2:accountNumber>GE17TB7142536020100006</ns2:accountNumber>
    <ns2:accountName>კლიენტი:1425, 123456786</ns2:accountName>
    <ns2:additionalInformation>კლიენტი:1425, TBCBGE22, GE44TB7142536020100005</ns2:additionalInformation>
    <ns2:documentDate>2018-12-13T00:00:00+04:00</ns2:documentDate>
    <ns2:documentNumber>1544698824</ns2:documentNumber>
    <ns2:partnerAccountNumber>GE44TB7142536020100005</ns2:partnerAccountNumber>
    <ns2:partnerName>კლიენტი:1425</ns2:partnerName>
    <ns2:partnerTaxCode>123456786</ns2:partnerTaxCode>
    <ns2:partnerBankCode>TBCBGE22</ns2:partnerBankCode>
    <ns2:partnerBank>სს  თიბისი  ბანკი</ns2:partnerBank>
    <ns2:taxpayerCode>123456786</ns2:taxpayerCode>
    <ns2:taxpayerName>კლიენტი:1425, 123456786</ns2:taxpayerName>
    <ns2:operationCode>GII</ns2:operationCode>
    <ns2:partnerDocumentType>0</ns2:partnerDocumentType>
    <ns2:statusCode>3</ns2:statusCode>
    <ns2:transactionType>1</ns2:transactionType></ns2:accountMovement>
    <ns2:accountMovement><ns2:movementId>002147575329.2</ns2:movementId>
    <ns2:externalPaymentId>2147575329</ns2:externalPaymentId>
    <ns2:debitCredit>1</ns2:debitCredit>
    <ns2:valueDate>2018-12-13T00:00:00+04:00</ns2:valueDate>
    <ns2:description>ანგარიშზე თანხის შეტანა</ns2:description><ns2:amount>
    <ns2:amount>100000</ns2:amount><ns2:currency>GEL</ns2:currency></ns2:amount>
    <ns2:accountNumber>GE17TB7142536020100006</ns2:accountNumber>
    <ns2:accountName>კლიენტი:1425</ns2:accountName>
    <ns2:additionalInformation>სახელი:3928462 გვარი3928462</ns2:additionalInformation>
    <ns2:documentDate>2018-12-13T00:00:00+04:00</ns2:documentDate>
    <ns2:documentNumber>63946130</ns2:documentNumber>
    <ns2:partnerAccountNumber>GE78TB0000000000060000</ns2:partnerAccountNumber>
    <ns2:partnerName>სახელი:3928462 გვარი3928462</ns2:partnerName>
    <ns2:partnerTaxCode>00000000000</ns2:partnerTaxCode>
    <ns2:partnerBankCode>TBCBGE22</ns2:partnerBankCode><ns2:partnerBank>ს.ს. „თიბისი ბანკი”</ns2:partnerBank>
    <ns2:operationCode>01</ns2:operationCode>
    <ns2:partnerPersonalNumber>00000000000</ns2:partnerPersonalNumber>
    <ns2:partnerDocumentType>6</ns2:partnerDocumentType>
    <ns2:partnerDocumentNumber>DC102086</ns2:partnerDocumentNumber>
    <ns2:statusCode>3</ns2:statusCode>
    <ns2:transactionType>20</ns2:transactionType>
</ns2:accountMovement>
</ns2:GetAccountMovementsResponseIo>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我想在標簽內分別獲取<ns2:paymentId>, <ns2:externalPaymentId>, <ns2:debitCredit>等數據。

請注意,這是銀行對帳單的偽數據,在現實生活中,每個交易的響應都具有多個名稱相同的標簽。 例如,如果有11個交易,則將有11個<ns2:paymentId>標記,我需要一個一個地獲取數據。

使用SimpleXML,您可以更輕松地讀取代碼和數據。 唯一的事情是您需要尊重名稱空間。 因此,首先注冊ns2命名空間,以便隨后可以獲取<ns2:accountMovement>元素。 遍歷這些變量,但要訪問名稱空間中的子元素,請使用children("http://www.mygemini.com/schemas/mygemini")將它們放入$data變量,然后每次訪問都通過此(即$data->paymentId )...

$xml = simplexml_load_string($xmlContent);
$xml->registerXPathNamespace("ns2", "http://www.mygemini.com/schemas/mygemini");
$movements = $xml->xpath("//ns2:GetAccountMovementsResponseIo/ns2:accountMovement");
foreach ( $movements as $accMove ) {
    $data = $accMove->children("http://www.mygemini.com/schemas/mygemini");
    echo "paymentId ->".$data->paymentId.PHP_EOL;
    echo "externalPaymentId ->".$data->externalPaymentId.PHP_EOL;
    echo "debitCredit ->".$data->debitCredit.PHP_EOL;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM