Como adicionar parâmetros a um elemento xml com SoapClient?

Olá!

Preciso criar um elemento com a seguinte estrutura:

<configUhList>
    <configUh qtAdulto="1" qtCrianca="2">
        <idadeCriancaList>
            <idadeCrianca>
                <qtIdade>1</qtIdade>
            </idadeCrianca>
            <idadeCrianca>
                <qtIdade>3</qtIdade>
            </idadeCrianca>
        </idadeCriancaList>
    </configUh>
</configUhList>

E em meu PHP para montar isso, estou fazendo:

private function montarParametroQuartos($quartos)
{
    $configUh = array('configUh' => array());
    foreach ($quartos as $quarto) {
        $configQuarto = array(
            'qtAdulto' => $quarto['numeroDeAdultos'],
            'qtCrianca' => $quarto['numeroDeCriancas']
        );

        if ($quarto['numeroDeCriancas'] > 0) {
            $configQuarto['_'] = array('idadeCriancaList' => array());
        }
        foreach ($quarto['idadeDasCriancas'] as $idade) {
            $configQuarto['_']['idadeCriancaList']['idadeCrianca'][] = array(
                'qtIdade' => $idade
            );
        }

        $configUh['configUh'][] = $configQuarto;
    }

    return $configUh;
}

Tendo meu array $quartos a seguinte estrutura:

$quartos = array(
    array(
        'numeroDeAdultos' => 1,
        'numeroDeCriancas' => 2,
        'idadeDasCriancas' => array(1, 3)
    )
);

Mas, isso me gera o seguinte xml:

<configUhList>
    <configUh qtAdulto="1" qtCrianca="2"/>
</configUhList>

Como eu posso adicionar parâmetros E filhos a um elemento XML utilizando SoapClient do PHP?

Muito obrigado, desde já.

1 curtida

Consegui da seguinte forma:

private function montarParametroQuartos($quartos)
{
    $configUh = array('configUh' => array());
    foreach ($quartos as $quarto) {
        $configQuarto = array(
            'qtAdulto' => $quarto['numeroDeAdultos'],
            'qtCrianca' => $quarto['numeroDeCriancas']
        );

        if ($quarto['numeroDeCriancas'] > 0) {
            $configQuarto['idadeCriancaList'] = array();
        }
        foreach ($quarto['idadeDasCriancas'] as $idade) {
            $configQuarto['idadeCriancaList']['idadeCrianca'][] = array(
                'qtIdade' => $idade
            );
        }

        $configUh['configUh'][] = $configQuarto;
    }

    return $configUh;
}