Php 如何打印响应soap请求的单个xml值?

Php 如何打印响应soap请求的单个xml值?,php,soap,Php,Soap,这是我的SOAP客户端请求代码: <?php $cf = "DTRMRA48P55D539C"; $chiave = "700400125745081"; $numdoc = "AV1871102"; $tipodoc = 1; //$numid = $_POST['numid']; $codoper = "PCCPLA66T11L719L"; $idag = "35852"; $wsdl = "https://p

这是我的SOAP客户端请求代码:

<?php

    $cf = "DTRMRA48P55D539C";
    $chiave = "700400125745081";
    $numdoc = "AV1871102";
    $tipodoc = 1;
        //$numid = $_POST['numid'];
    $codoper = "PCCPLA66T11L719L";
    $idag = "35852";

    $wsdl = "https://portalws.inps.it/ws/wsCessioneQuintoWebTest/WsInpsCessioneQuinto.asmx?WSDL";
    $local_cert = "C:\\Apache24\htdocs\sirio2.pem";

         $soapClient = new SoapClient($wsdl, array('local_cert' => $local_cert, 'trace' => 1, 'soap_version' => SOAP_1_1));
    try {
        $result = $soapClient->RichiestaCedibilita(array('CodFiscale' => $cf, 'ChiavePensione' =>  $chiave, 'NumDocumento' => $numdoc, 'TipoDocumento' => 1, 'CodiceOperatore' => $codoper, 'IdentificativoAgenzia' => $idag));

    print_r($soapClient->__getlastResponse());

        $soap = print_r($soapClient->__getlastResponse());

        print_r($soap);

}

catch (SoapFault $exception) {
   echo $exception;      
}  

?>
<?xml version="1.0" encoding="utf-8" ?><DatiCedibilita><Cedibilita><Id>20190000277</Id><CodiceFiscale>DTRMRA48P55D539C</CodiceFiscale><ChiavePensione>700400125745081</ChiavePensione><Cognome>DTR</Cognome><Nome>MRA</Nome><DataNascita>1948-09-15</DataNascita><CodiceSede>0100</CodiceSede><DenominazioneSede>AGRIGENTO</DenominazioneSede><IndirizzoSede>VIA PICONE 20/30 - 92100 - AGRIGENTO - AG</IndirizzoSede><Importo>250.0000</Importo><DataUltimaRichiestaCedibilita>2019-01-15</DataUltimaRichiestaCedibilita><RichiedenteUltimaCedibilita>Istituto di Credito</RichiedenteUltimaCedibilita><DataScadenzaAOI>202002</DataScadenzaAOI><DataRilascio>2019-01-16</DataRilascio><Note></Note><ProtocolloINPS>INPS.TESTC1.16/01/2019.0000287</ProtocolloINPS><CodiceErrore>0</CodiceErrore><DescrizioneErrore></DescrizioneErrore></Cedibilita></DatiCedibilita><?xml version="1.0" encoding="utf-8" ?><DatiCedibilita><Cedibilita><Id>20190000277</Id><CodiceFiscale>DTRMRA48P55D539C</CodiceFiscale><ChiavePensione>700400125745081</ChiavePensione><Cognome>DTR</Cognome><Nome>MRA</Nome><DataNascita>1948-09-15</DataNascita><CodiceSede>0100</CodiceSede><DenominazioneSede>AGRIGENTO</DenominazioneSede><IndirizzoSede>VIA PICONE 20/30 - 92100 - AGRIGENTO - AG</IndirizzoSede><Importo>250.0000</Importo><DataUltimaRichiestaCedibilita>2019-01-15</DataUltimaRichiestaCedibilita><RichiedenteUltimaCedibilita>Istituto di Credito</RichiedenteUltimaCedibilita><DataScadenzaAOI>202002</DataScadenzaAOI><DataRilascio>2019-01-16</DataRilascio><Note></Note><ProtocolloINPS>INPS.TESTC1.16/01/2019.0000287</ProtocolloINPS><CodiceErrore>0</CodiceErrore><DescrizioneErrore></DescrizioneErrore></Cedibilita></DatiCedibilita>1 ?> 
$id = $soap->id;

print("Id=" . $id);
$id = $soap['id'];

print("Id=" . $id);

这是我的回答:

<?php

    $cf = "DTRMRA48P55D539C";
    $chiave = "700400125745081";
    $numdoc = "AV1871102";
    $tipodoc = 1;
        //$numid = $_POST['numid'];
    $codoper = "PCCPLA66T11L719L";
    $idag = "35852";

    $wsdl = "https://portalws.inps.it/ws/wsCessioneQuintoWebTest/WsInpsCessioneQuinto.asmx?WSDL";
    $local_cert = "C:\\Apache24\htdocs\sirio2.pem";

         $soapClient = new SoapClient($wsdl, array('local_cert' => $local_cert, 'trace' => 1, 'soap_version' => SOAP_1_1));
    try {
        $result = $soapClient->RichiestaCedibilita(array('CodFiscale' => $cf, 'ChiavePensione' =>  $chiave, 'NumDocumento' => $numdoc, 'TipoDocumento' => 1, 'CodiceOperatore' => $codoper, 'IdentificativoAgenzia' => $idag));

    print_r($soapClient->__getlastResponse());

        $soap = print_r($soapClient->__getlastResponse());

        print_r($soap);

}

catch (SoapFault $exception) {
   echo $exception;      
}  

?>
<?xml version="1.0" encoding="utf-8" ?><DatiCedibilita><Cedibilita><Id>20190000277</Id><CodiceFiscale>DTRMRA48P55D539C</CodiceFiscale><ChiavePensione>700400125745081</ChiavePensione><Cognome>DTR</Cognome><Nome>MRA</Nome><DataNascita>1948-09-15</DataNascita><CodiceSede>0100</CodiceSede><DenominazioneSede>AGRIGENTO</DenominazioneSede><IndirizzoSede>VIA PICONE 20/30 - 92100 - AGRIGENTO - AG</IndirizzoSede><Importo>250.0000</Importo><DataUltimaRichiestaCedibilita>2019-01-15</DataUltimaRichiestaCedibilita><RichiedenteUltimaCedibilita>Istituto di Credito</RichiedenteUltimaCedibilita><DataScadenzaAOI>202002</DataScadenzaAOI><DataRilascio>2019-01-16</DataRilascio><Note></Note><ProtocolloINPS>INPS.TESTC1.16/01/2019.0000287</ProtocolloINPS><CodiceErrore>0</CodiceErrore><DescrizioneErrore></DescrizioneErrore></Cedibilita></DatiCedibilita><?xml version="1.0" encoding="utf-8" ?><DatiCedibilita><Cedibilita><Id>20190000277</Id><CodiceFiscale>DTRMRA48P55D539C</CodiceFiscale><ChiavePensione>700400125745081</ChiavePensione><Cognome>DTR</Cognome><Nome>MRA</Nome><DataNascita>1948-09-15</DataNascita><CodiceSede>0100</CodiceSede><DenominazioneSede>AGRIGENTO</DenominazioneSede><IndirizzoSede>VIA PICONE 20/30 - 92100 - AGRIGENTO - AG</IndirizzoSede><Importo>250.0000</Importo><DataUltimaRichiestaCedibilita>2019-01-15</DataUltimaRichiestaCedibilita><RichiedenteUltimaCedibilita>Istituto di Credito</RichiedenteUltimaCedibilita><DataScadenzaAOI>202002</DataScadenzaAOI><DataRilascio>2019-01-16</DataRilascio><Note></Note><ProtocolloINPS>INPS.TESTC1.16/01/2019.0000287</ProtocolloINPS><CodiceErrore>0</CodiceErrore><DescrizioneErrore></DescrizioneErrore></Cedibilita></DatiCedibilita>1 ?> 
$id = $soap->id;

print("Id=" . $id);
$id = $soap['id'];

print("Id=" . $id);
20190000277DTRMRA48P55D539C700125745081DTRMRA1948-09-150100AGRIGENTOVIA PICONE 20/30-92100-AGRIGENTO-AG250.0002019-01-15 Credito 202002019-01-16INPS.TESTC1.16/01/2019.000027020190000277DTRMRA48P55D539C700125745081DTRMRA1948-09-150100Agrigento-AG250.000019-01-15-15CreditO202002019-01-16INPS.TESTC1.16/01/2019.000028701?>
如何打印单个标记值例如:

<?php

    $cf = "DTRMRA48P55D539C";
    $chiave = "700400125745081";
    $numdoc = "AV1871102";
    $tipodoc = 1;
        //$numid = $_POST['numid'];
    $codoper = "PCCPLA66T11L719L";
    $idag = "35852";

    $wsdl = "https://portalws.inps.it/ws/wsCessioneQuintoWebTest/WsInpsCessioneQuinto.asmx?WSDL";
    $local_cert = "C:\\Apache24\htdocs\sirio2.pem";

         $soapClient = new SoapClient($wsdl, array('local_cert' => $local_cert, 'trace' => 1, 'soap_version' => SOAP_1_1));
    try {
        $result = $soapClient->RichiestaCedibilita(array('CodFiscale' => $cf, 'ChiavePensione' =>  $chiave, 'NumDocumento' => $numdoc, 'TipoDocumento' => 1, 'CodiceOperatore' => $codoper, 'IdentificativoAgenzia' => $idag));

    print_r($soapClient->__getlastResponse());

        $soap = print_r($soapClient->__getlastResponse());

        print_r($soap);

}

catch (SoapFault $exception) {
   echo $exception;      
}  

?>
<?xml version="1.0" encoding="utf-8" ?><DatiCedibilita><Cedibilita><Id>20190000277</Id><CodiceFiscale>DTRMRA48P55D539C</CodiceFiscale><ChiavePensione>700400125745081</ChiavePensione><Cognome>DTR</Cognome><Nome>MRA</Nome><DataNascita>1948-09-15</DataNascita><CodiceSede>0100</CodiceSede><DenominazioneSede>AGRIGENTO</DenominazioneSede><IndirizzoSede>VIA PICONE 20/30 - 92100 - AGRIGENTO - AG</IndirizzoSede><Importo>250.0000</Importo><DataUltimaRichiestaCedibilita>2019-01-15</DataUltimaRichiestaCedibilita><RichiedenteUltimaCedibilita>Istituto di Credito</RichiedenteUltimaCedibilita><DataScadenzaAOI>202002</DataScadenzaAOI><DataRilascio>2019-01-16</DataRilascio><Note></Note><ProtocolloINPS>INPS.TESTC1.16/01/2019.0000287</ProtocolloINPS><CodiceErrore>0</CodiceErrore><DescrizioneErrore></DescrizioneErrore></Cedibilita></DatiCedibilita><?xml version="1.0" encoding="utf-8" ?><DatiCedibilita><Cedibilita><Id>20190000277</Id><CodiceFiscale>DTRMRA48P55D539C</CodiceFiscale><ChiavePensione>700400125745081</ChiavePensione><Cognome>DTR</Cognome><Nome>MRA</Nome><DataNascita>1948-09-15</DataNascita><CodiceSede>0100</CodiceSede><DenominazioneSede>AGRIGENTO</DenominazioneSede><IndirizzoSede>VIA PICONE 20/30 - 92100 - AGRIGENTO - AG</IndirizzoSede><Importo>250.0000</Importo><DataUltimaRichiestaCedibilita>2019-01-15</DataUltimaRichiestaCedibilita><RichiedenteUltimaCedibilita>Istituto di Credito</RichiedenteUltimaCedibilita><DataScadenzaAOI>202002</DataScadenzaAOI><DataRilascio>2019-01-16</DataRilascio><Note></Note><ProtocolloINPS>INPS.TESTC1.16/01/2019.0000287</ProtocolloINPS><CodiceErrore>0</CodiceErrore><DescrizioneErrore></DescrizioneErrore></Cedibilita></DatiCedibilita>1 ?> 
$id = $soap->id;

print("Id=" . $id);
$id = $soap['id'];

print("Id=" . $id);

Id=20190000277

如果我是你,我会打电话给
var\u dump($soap)
。这将向您显示必须使用的数组/对象的结构。然后,您可以深入到这一点,以输出您想要的确切值

例如(如果是对象):

<?php

    $cf = "DTRMRA48P55D539C";
    $chiave = "700400125745081";
    $numdoc = "AV1871102";
    $tipodoc = 1;
        //$numid = $_POST['numid'];
    $codoper = "PCCPLA66T11L719L";
    $idag = "35852";

    $wsdl = "https://portalws.inps.it/ws/wsCessioneQuintoWebTest/WsInpsCessioneQuinto.asmx?WSDL";
    $local_cert = "C:\\Apache24\htdocs\sirio2.pem";

         $soapClient = new SoapClient($wsdl, array('local_cert' => $local_cert, 'trace' => 1, 'soap_version' => SOAP_1_1));
    try {
        $result = $soapClient->RichiestaCedibilita(array('CodFiscale' => $cf, 'ChiavePensione' =>  $chiave, 'NumDocumento' => $numdoc, 'TipoDocumento' => 1, 'CodiceOperatore' => $codoper, 'IdentificativoAgenzia' => $idag));

    print_r($soapClient->__getlastResponse());

        $soap = print_r($soapClient->__getlastResponse());

        print_r($soap);

}

catch (SoapFault $exception) {
   echo $exception;      
}  

?>
<?xml version="1.0" encoding="utf-8" ?><DatiCedibilita><Cedibilita><Id>20190000277</Id><CodiceFiscale>DTRMRA48P55D539C</CodiceFiscale><ChiavePensione>700400125745081</ChiavePensione><Cognome>DTR</Cognome><Nome>MRA</Nome><DataNascita>1948-09-15</DataNascita><CodiceSede>0100</CodiceSede><DenominazioneSede>AGRIGENTO</DenominazioneSede><IndirizzoSede>VIA PICONE 20/30 - 92100 - AGRIGENTO - AG</IndirizzoSede><Importo>250.0000</Importo><DataUltimaRichiestaCedibilita>2019-01-15</DataUltimaRichiestaCedibilita><RichiedenteUltimaCedibilita>Istituto di Credito</RichiedenteUltimaCedibilita><DataScadenzaAOI>202002</DataScadenzaAOI><DataRilascio>2019-01-16</DataRilascio><Note></Note><ProtocolloINPS>INPS.TESTC1.16/01/2019.0000287</ProtocolloINPS><CodiceErrore>0</CodiceErrore><DescrizioneErrore></DescrizioneErrore></Cedibilita></DatiCedibilita><?xml version="1.0" encoding="utf-8" ?><DatiCedibilita><Cedibilita><Id>20190000277</Id><CodiceFiscale>DTRMRA48P55D539C</CodiceFiscale><ChiavePensione>700400125745081</ChiavePensione><Cognome>DTR</Cognome><Nome>MRA</Nome><DataNascita>1948-09-15</DataNascita><CodiceSede>0100</CodiceSede><DenominazioneSede>AGRIGENTO</DenominazioneSede><IndirizzoSede>VIA PICONE 20/30 - 92100 - AGRIGENTO - AG</IndirizzoSede><Importo>250.0000</Importo><DataUltimaRichiestaCedibilita>2019-01-15</DataUltimaRichiestaCedibilita><RichiedenteUltimaCedibilita>Istituto di Credito</RichiedenteUltimaCedibilita><DataScadenzaAOI>202002</DataScadenzaAOI><DataRilascio>2019-01-16</DataRilascio><Note></Note><ProtocolloINPS>INPS.TESTC1.16/01/2019.0000287</ProtocolloINPS><CodiceErrore>0</CodiceErrore><DescrizioneErrore></DescrizioneErrore></Cedibilita></DatiCedibilita>1 ?> 
$id = $soap->id;

print("Id=" . $id);
$id = $soap['id'];

print("Id=" . $id);
如果是数组:

<?php

    $cf = "DTRMRA48P55D539C";
    $chiave = "700400125745081";
    $numdoc = "AV1871102";
    $tipodoc = 1;
        //$numid = $_POST['numid'];
    $codoper = "PCCPLA66T11L719L";
    $idag = "35852";

    $wsdl = "https://portalws.inps.it/ws/wsCessioneQuintoWebTest/WsInpsCessioneQuinto.asmx?WSDL";
    $local_cert = "C:\\Apache24\htdocs\sirio2.pem";

         $soapClient = new SoapClient($wsdl, array('local_cert' => $local_cert, 'trace' => 1, 'soap_version' => SOAP_1_1));
    try {
        $result = $soapClient->RichiestaCedibilita(array('CodFiscale' => $cf, 'ChiavePensione' =>  $chiave, 'NumDocumento' => $numdoc, 'TipoDocumento' => 1, 'CodiceOperatore' => $codoper, 'IdentificativoAgenzia' => $idag));

    print_r($soapClient->__getlastResponse());

        $soap = print_r($soapClient->__getlastResponse());

        print_r($soap);

}

catch (SoapFault $exception) {
   echo $exception;      
}  

?>
<?xml version="1.0" encoding="utf-8" ?><DatiCedibilita><Cedibilita><Id>20190000277</Id><CodiceFiscale>DTRMRA48P55D539C</CodiceFiscale><ChiavePensione>700400125745081</ChiavePensione><Cognome>DTR</Cognome><Nome>MRA</Nome><DataNascita>1948-09-15</DataNascita><CodiceSede>0100</CodiceSede><DenominazioneSede>AGRIGENTO</DenominazioneSede><IndirizzoSede>VIA PICONE 20/30 - 92100 - AGRIGENTO - AG</IndirizzoSede><Importo>250.0000</Importo><DataUltimaRichiestaCedibilita>2019-01-15</DataUltimaRichiestaCedibilita><RichiedenteUltimaCedibilita>Istituto di Credito</RichiedenteUltimaCedibilita><DataScadenzaAOI>202002</DataScadenzaAOI><DataRilascio>2019-01-16</DataRilascio><Note></Note><ProtocolloINPS>INPS.TESTC1.16/01/2019.0000287</ProtocolloINPS><CodiceErrore>0</CodiceErrore><DescrizioneErrore></DescrizioneErrore></Cedibilita></DatiCedibilita><?xml version="1.0" encoding="utf-8" ?><DatiCedibilita><Cedibilita><Id>20190000277</Id><CodiceFiscale>DTRMRA48P55D539C</CodiceFiscale><ChiavePensione>700400125745081</ChiavePensione><Cognome>DTR</Cognome><Nome>MRA</Nome><DataNascita>1948-09-15</DataNascita><CodiceSede>0100</CodiceSede><DenominazioneSede>AGRIGENTO</DenominazioneSede><IndirizzoSede>VIA PICONE 20/30 - 92100 - AGRIGENTO - AG</IndirizzoSede><Importo>250.0000</Importo><DataUltimaRichiestaCedibilita>2019-01-15</DataUltimaRichiestaCedibilita><RichiedenteUltimaCedibilita>Istituto di Credito</RichiedenteUltimaCedibilita><DataScadenzaAOI>202002</DataScadenzaAOI><DataRilascio>2019-01-16</DataRilascio><Note></Note><ProtocolloINPS>INPS.TESTC1.16/01/2019.0000287</ProtocolloINPS><CodiceErrore>0</CodiceErrore><DescrizioneErrore></DescrizioneErrore></Cedibilita></DatiCedibilita>1 ?> 
$id = $soap->id;

print("Id=" . $id);
$id = $soap['id'];

print("Id=" . $id);
如果您提供
var\u dump($soap)
,我应该能够准确地向您展示您需要的代码


我希望这有帮助

所有这些行仅回显要输出的值

print_r($soapClient->__getlastResponse());
$soap = print_r($soapClient->__getlastResponse());
print_r($soap);
拆下上部管路并更换为下部管路。要设置$soap并获取值,请使用xml解析器,例如simplexml库

$soap = $soapClient->__getlastResponse();
$xml = simplexml_load_string($soap);
echo $xml->Cedibilita->Id; // 20190000277

您需要获取有关SOAP服务的函数和类型的信息

<?php
...
# SOAP Client
$soapClient = new SoapClient($wsdl, array('local_cert' => $local_cert, 'trace' => 1, 'soap_version' => SOAP_1_1));

# List functions
echo 'Functions: '.'</br>';
$functions = $soapClient->__getFunctions();
foreach($functions as $item) {
    echo $item.'</br>';
}
echo '</br>';

# List types
echo 'Types: '.'</br>';
$types = $soapClient->__getTypes();
foreach($types as $item) {
    echo $item.'</br>';
}
echo '</br>';
...

?>

嗨,我尝试了这个并为我工作:

<?php

    $cf = "DTRMRA48P55D539C";
    $chiave = "700400125745081";
    $numdoc = "AV1871102";
    $tipodoc = 1;
        //$numid = $_POST['numid'];
    $codoper = "PCCPLA66T11L719L";
    $idag = "35852";

    $wsdl = "https://portalws.inps.it/ws/wsCessioneQuintoWebTest/WsInpsCessioneQuinto.asmx?WSDL";
    $local_cert = "C:\\Apache24\htdocs\sirio2.pem";

    $soapClient = new SoapClient($wsdl, array('local_cert' => $local_cert, 'trace' => 1, 'soap_version' => SOAP_1_1));


  $result = $soapClient->RichiestaCedibilita(array('CodFiscale' => $cf, 'ChiavePensione' =>  $chiave, 'NumDocumento' => $numdoc, 'TipoDocumento' => 1, 'CodiceOperatore' => $codoper, 'IdentificativoAgenzia' => $idag));




$xml = simplexml_load_string($result->RichiestaCedibilitaResult);
echo ($xml->Cedibilita->Id);

?>
RichiestaCedibilitaResult);
echo($xml->Cedibilita->Id);
?>

OP将print\r($soap)的结果放入问题这是我的var\u dump($soap):字符串(1473)“20190000282DTRMRA48P55D539C700400125745081DTRMRA1948-09-150100AGRIGENTO…@splash58是的,但是
print\r
并不能很好地显示数组/对象的格式。@Serenella Angelilli啊,它以字符串形式返回整个响应,在这种情况下,您需要遵循splash58的想法,将该字符串格式化为XML对象,然后从中提取值。如何将其格式化为XML对象,然后访问数据?您好,感谢您的回答……我尝试了以下方法:$soap=$soapClient->u getlastResponse()$xml=simplexml\u load\u字符串($soap);echo$xml->Cedibilita->Id;//20190000277我的回答是:?>如何将字符串自动转换为xml?@Serenella Angelilli如果字符串是有效的xml,例如使用
simplexml\u load\u string()
。但是,我认为您需要知道
RichiestaCedibilita()
调用的类型,并根据该类型读取数据。在大多数情况下,这是一个数组。响应是一个字符串…不是有效的xml!我不知道如何解决这个问题problem@serenellaangelillixml是一个文本字符串,通过调用simplexml\u load将其转换为对象_string@splash58对我已经测试过了,如果我去掉第二部分,它就可以工作了。