Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou precisando fazer o envio de um XML via webservice. Estou utilizando PHP 7.4 e nuSoap.
Porém esse XML de envio possui várias tags com hífen. Por exemplo <tag-name></tag-name>.
Esse hífen tem sido um problema, principalmente por que eu não posso enviar o XML como string. Apenas como objeto. Então imaginem isso:
$objeto = simplexml_load_string($string_xml);
Se simplesmente eu tentar resgatar o valor da TAG já dá erro...
$campo1= $objeto->tag-name;
O erro ocorre em função de que o hífen é um caractere reservado do PHP... Então como resolver?
Independente disso, quando eu tento fazer o envio via nuSoap, também recebo erro abaixo:wsdl->getTypeDef('tag-name', '[http://xyz.abr](http://nfse.abr/)...')wsdl->serializeType('tag-name', 'tag-name', Object(SimpleXMLElement), 'Alguém já passou por isso? Sabe como resolver? Pode dar uma dica?Não funciona... Vou explicar de outra forma:
Imagina que ali no NuSoap eu preciso montar um array da seguinte forma:
$object = array('enviarRequest'=>array('envioLote'=>array('Campo1'=>$Campo1, 'Campo2'=>$campo2, 'CampoCom-HIFEM'=>$Campo3)));
$result = $client->call($servico, $object);
Esse "**CampoCom-HIFEM**" é que é o problema... Ele resulta sempre esse erro abaixo pra mim:
wsdl: getTypeDef('CampoCom-HIFEM', 'http://abc.abr...')
wsdl: serializeType('CampoCom-HIFEM', 'CampoCom-HIFEM', '<infABC versao...'
wsdl: in getTypeDef: type=CampoCom-HIFEM, ns=
wsdl: in getTypeDef: type namespace forced to http://abc.abr...
wsdl: in getTypeDef: have schema for namespace http://abc.abr...
nusoap_xmlschema: <http://abc.abr...> in getTypeDef, did not find CampoCom-HIFEM
wsdl: in getTypeDef: did not find type CampoCom-HIFEM
wsdl: in serializeType: CampoCom-HIFEM (CampoCom-HIFEM) is not a supported type.
Ou seja, eu diria que o problema não é na variável que vai no campo. E sim, o nome do campo em si. Porém, o webservice em questão tem esse campo lá no Schema XSD com o Hifen.
<xs:element ref="CampoCom-HIFEM" minOccurs="1" maxOccurs="999"/>
E agora, como resolver isso?
transforme seu objecto em um array, seja feliz
var_dump( (array) $objeto );