Ich schreibe einen Code mit einem Webservice, der ziemlich genau eine Adressinformation sendet und mir einen Tracking-Code und Versandinformationen mit einem brasilianischen Kurierdienst zurückgibt.PHP Webservice XML Ausgabe/Tag Element Wert
Der Code ist:
$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);
so als ich den Anruf -> PostarObjeto Methode es gibt mir die folgenden 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>
Ich brauche <Etiqueta>PZ000000822BR</Etiqueta>
den Wert zwischen dem Tag zu bekommen. Ich habe die meisten der hier gefundenen Lösungen wie DOMElement, simplexml, REGEX ausprobiert und hatte keinen Erfolg. Ich mache wahrscheinlich etwas falsch, aber ich kann nicht herausfinden, was es ist, da ich nicht viel Erfahrung mit Webservices habe.
Vielen Dank und Entschuldigung für das arme Englisch.
Der Fehler: Hinweis: Der Versuch, die Eigenschaft von Nicht-Objekt in der Zeile '$ etiqueta = $ xml_obj-> Volumes-> VolumeObjeto-> Etiqueta;' –
habe ich nicht, aber vielleicht sieht Ihr XML anders aus als die angenommene Eingabe. Ich habe meine Antwort so bearbeitet, dass sie einen XPath verwendet. Schau, ob es jetzt funktioniert. –