首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP -> Soap响应(从->标记获取数据)

PHP -> Soap响应(从->标记获取数据)
EN

Stack Overflow用户
提问于 2018-12-18 23:50:39
回答 1查看 621关注 0票数 0

我有一个包含Soap XML数据的Curl响应。

代码语言:javascript
复制
<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>标签,我需要逐个获取数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-20 03:41:42

使用SimpleXML,您可以更轻松地阅读代码和数据。唯一的问题是您需要尊重名称空间。因此,首先注册ns2名称空间,这样就可以获取<ns2:accountMovement>元素。循环遍历这些元素,但要访问名称空间中的子元素,请使用children("http://www.mygemini.com/schemas/mygemini")将它们放入$data变量中,然后每次访问都是通过这个(即$data->paymentId)...

代码语言:javascript
复制
$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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53836653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档