0
我正在寫一個代碼使用web服務,幾乎發送一個地址信息,並使用巴西快遞公司返回一個跟蹤代碼和貨件信息。PHP Webservice XML輸出/標籤元素值
的代碼是:
$url = "http://vpsrv.visualset.com.br/?wsdl";
$client = new SoapClient($url);
$parametrosVipp = new stdClass();
$parametrosVipp->PostagemVipp = new stdClass();
//webservice access data
$parametrosVipp->PostagemVipp->PerfilVipp = new stdClass();
$parametrosVipp->PostagemVipp->PerfilVipp->Usuario = "webservice";
$parametrosVipp->PostagemVipp->PerfilVipp->Token = "testewebservice";
$parametrosVipp->PostagemVipp->PerfilVipp->IdPerfil = "605";
//webservice address data
$parametrosVipp->PostagemVipp->Destinatario = new stdClass();
$parametrosVipp->PostagemVipp->Destinatario->CnpjCpf = "33323884845";
$parametrosVipp->PostagemVipp->Destinatario->Nome = "Rafael Ferreira";
$parametrosVipp->PostagemVipp->Destinatario->Endereco = "Al Americana";
$parametrosVipp->PostagemVipp->Destinatario->Numero = "156";
$parametrosVipp->PostagemVipp->Destinatario->Complemento = "casa";
$parametrosVipp->PostagemVipp->Destinatario->Bairro = "Jd Paulista";
$parametrosVipp->PostagemVipp->Destinatario->Cidade = "Vinhedo";
$parametrosVipp->PostagemVipp->Destinatario->UF = "SP";
$parametrosVipp->PostagemVipp->Destinatario->Cep = "13280000";
//store order number
$parametrosVipp->PostagemVipp->NotasFiscais = new stdClass();
$parametrosVipp->PostagemVipp->NotasFiscais->NotaFiscal = new stdClass();
$parametrosVipp->PostagemVipp->NotasFiscais->NotaFiscal->NrNotaFiscal = "11223344";
//package info
$parametrosVipp->PostagemVipp->Volumes = new stdClass();
$parametrosVipp->PostagemVipp->Volumes->VolumeObjeto = new stdClass();
$parametrosVipp->PostagemVipp->Volumes->VolumeObjeto->Peso = "?";
$parametrosVipp->PostagemVipp->Volumes->VolumeObjeto->Altura = "?";
$parametrosVipp->PostagemVipp->Volumes->VolumeObjeto->Largura = "?";
$parametrosVipp->PostagemVipp->Volumes->VolumeObjeto->Comprimento = "?";
$parametrosVipp->PostagemVipp->Volumes->VolumeObjeto->CodigoBarraVolume = "?";
$parametrosVipp->PostagemVipp->Volumes->VolumeObjeto->CodigoBarraCliente = "?";
$parametrosVipp->PostagemVipp->Volumes->VolumeObjeto->ObservacaoVisual = "?";
$parametrosVipp->PostagemVipp->Volumes->VolumeObjeto->Conteudo = "?";
$parametrosVipp->PostagemVipp->Volumes->VolumeObjeto->AdicionaisVolume = "?";
$parametrosVipp->PostagemVipp->Volumes->VolumeObjeto->Etiqueta = "?";
$obj = new ObjectAndXML();
$retorno = $client->PostarObjeto($parametrosVipp);
$recordsXML = $obj->objToXML($retorno);
var_dump($recordsXML);
preg_match('#<Postagem>(.*?)</Postagem>#', $recordsXML, $match);
print_r($match);
因此,當我打電話 - > PostarObjeto方法返回我下面的XML:
<Postagem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="">
<ContratoEct>
<NrContrato>9912329784</NrContrato><CodigoAdministrativo>0013291092</CodigoAdministrativo><NrCartao>0067335344</NrCartao>
</ContratoEct>
<Destinatario>
<CnpjCpf>37323884845</CnpjCpf>
<IeRg/><Nome>Rafael Ferreira</Nome>
<Endereco>Al Americana</Endereco>
<Numero>156</Numero>
<Complemento>casa</Complemento>
<Bairro>Jd Paulista</Bairro>
<Cidade>Vinhedo</Cidade>
<UF>SP</UF>
<Cep>13280000</Cep>
<Telefone/><TelefoneSMS/><Email/>
</Destinatario>
<Servico>
<ServicoECT>41068</ServicoECT>
</Servico>
<NotasFiscais>
<NotaFiscal>
<DtNotaFiscal/><SerieNotaFiscal/><NrNotaFiscal>11223344</NrNotaFiscal><VlrTotalNota/>
</NotaFiscal></NotasFiscais>
<Volumes>
<VolumeObjeto>
<Peso>0</Peso>
<Cubagem>117</Cubagem>
<Altura>4</Altura>
<Largura>11</Largura>
<Comprimento>16</Comprimento>
<CodigoBarraVolume>?</CodigoBarraVolume>
<CodigoBarraCliente>?</CodigoBarraCliente>
<ObservacaoVisual>?</ObservacaoVisual>
<PosicaoVolume>1</PosicaoVolume>
<Conteudo>?</Conteudo>
<ValorDeclarado/>
<AdicionaisVolume>?</AdicionaisVolume><VlrACobrar/>
<Etiqueta>PZ000000822BR</Etiqueta>
<ValorTarifa>10.96</ValorTarifa
><ValorAdicionais>0.00</ValorAdicionais>
<ValorPostagem>10.96</ValorPostagem>
<StEntregaSabado>0</StEntregaSabado>
<StEntregaDomiciliar>1</StEntregaDomiciliar>
<DiasUteisPrazo>5</DiasUteisPrazo>
</VolumeObjeto>
</Volumes>
<ListaErros/>
<StatusPostagem>Valida</StatusPostagem>
</Postagem>
我需要讓標籤<Etiqueta>PZ000000822BR</Etiqueta>
之間的值。我嘗試了大部分我在這裏找到的解決方案,例如DOMElement,simplexml,REGEX,但都沒有成功。我可能做錯了什麼,但我不知道它是什麼,因爲我沒有很多的web服務經驗。
謝謝大家,並對可憐的英語感到抱歉。
得到了錯誤:請注意:試圖讓行非對象的屬性'$ etiqueta = $ xml_obj-> Volumes-> VolumeObjeto-> Etiqueta;' –
我沒有,但也許你的XML看起來比不同假定輸入。我編輯了我的答案,以便使用XPath。看看它現在是否正在工作。 –