Web Service DOM Create XML element no se como crear los elementos XML

Product :4D - 4D Server
4D : v12.5
OS : Mac OS X

Hola a todos,

Estoy tratando de consumir un Web Service a través de <code 4D>
CALL WEB SERVICE
</code 4D>
Obvio tengo que enviar en mi root el XML que lo consume, estoy trabajando con <code 4D>
DOM Create XML element
</code 4D>
Pero cuando estoy intentando crear mis elementos me atoro en una parte que hace que solo los genere vacios , explico:

Yo quiero obtener esto:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>

<soapenv:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:tem=“http://tempuri.org/” xmlns:tes=“http://schemas.datacontract.org/2004/07/TES.V33.CFDI.Negocios”>
soapenv:Header/
soapenv:Body
tem:ObtenerNumerosCreditos

     <tem:credenciales>

        <tes:Cuenta>sucursal1</tes:Cuenta>

        <tes:Password>pas123</tes:Password>

        <tes:Usuario>negocio</tes:Usuario>
     </tem:credenciales>
  </tem:ObtenerNumerosCreditos>

</soapenv:Body>
</soapenv:Envelope>

Con este método estoy trabajando
<code 4D>

C_TEXT($1) //Pensemos que trae llega “negocio”
C_TEXT($2) //Pensemos que trae llega “sucursal1”
C_TEXT($3) //Pensemos que trae llega “pas123”

C_TEXT($0)

C_STRING(16;$root)
C_STRING(16;$subelem)
C_TEXT($namespace;$namespace1;$namespace2;$namespace3;$aNSNom1;$aNSNom2;$aNSNom3)

$raiz:=“soapenv:Envelope”
$namespace:=“http://schemas.xmlsoap.org/soap/envelope/
$aNSNom1:=“xmlns:tem”
$aNSNom2:=“xmlns:tes”

$namespace1:=“http://tempuri.org/
$namespace2:=“http://schemas.datacontract.org/2004/07/TES.V33.CFDI.Negocios
$root:=DOM Create XML Ref($raiz;$namespace;$aNSNom1;$namespace1;$aNSNom2;$namespace2)
If (OK=0)
DOM CLOSE XML($root)
Else

$subelem:=DOM Create XML element($root;“soapenv:Header”)

//DOM SET XML ELEMENT VALUE($subelem;$1)
$subelem:=DOM Create XML element($root;“soapenv:Body”)

$subelem:=DOM Create XML element($root;“soapenv:Body”)

$subelem:=DOM Create XML element($root;“tem:ObtenerNumerosCreditos”)
// AQUI ES EL PROBLEMA ¿COMO LE HAGO PARA QUE SALGAN LOS COMENTADOS DE ABAJO, LOS NO COMENTADOS SI PASAN, PERO NO OBTENGO LO QUE QUIERO?
//$subelem:=DOM Create XML element($root;“tem:Body/ObtenerNumerosCreditos”)

$subelem:=DOM Create XML element($root;“tes:Cuenta”)
//$subelem:=DOM Create XML element($root;“tes:Body/ObtenerNumerosCreditos/credenciales/Cuenta”)
DOM SET XML ELEMENT VALUE($subelem;$2)
$subelem:=DOM Create XML element($root;“tes:Password”)
//$subelem:=DOM Create XML element($root;“tes:Body/ObtenerNumerosCreditos/credenciales/Password”)
DOM SET XML ELEMENT VALUE($subelem;$3)
$subelem:=DOM Create XML element($root;“tes:Usuario”)
//$subelem:=DOM Create XML element($root;“tes:Body/ObtenerNumerosCreditos/credenciales/Usuario”)
DOM SET XML ELEMENT VALUE($subelem;$1)

</code 4D>
Si se dan cuenta dentro del código de arriba estoy poniendo comentado lo que creo que debo poner para que me salga lo que necesito.

Pero obtengo esto:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>

<soapenv:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:tem=“http://tempuri.org/” xmlns:tes=“http://schemas.datacontract.org/2004/07/TES.V33.CFDI.Negocios”>

soapenv:Header/

soapenv:Body/

tem:ObtenerNumerosCreditos/

tes:Cuentasucursal1</tes:Cuenta>

tes:Passwordpas123</tes:Password>

tes:Usuarionegocio</tes:Usuario>

</soapenv:Envelope>

que tengo que hacer para que me respete la jerarquía ¿Alguna ayuda?

Quizá la pregunta que estoy haciendo aquí la respuesta es que debo de leer mucha documentación externa de XML con 4D
Alguien me puede orientar en que foro puedo poner esta misma duda en Inglés, quizá Milán sepa, cualquier sugerencia u orientación la agradeceré mucho

Muchas gracias de antemano también
Iván

Ya logré hacer el XML como lo necesitaba, pero aún no hago que el Web Service se consuma… bueno ahi voy.
Gracias al ejemplo de Ronron CURABO, aquí dejo la solución
<code 4D>

C_STRING(16;$root)
C_STRING(16;$subelem)
C_TEXT($namespace;$namespace1;$namespace2;$namespace3;$aNSNom1;$aNSNom2;$aNSNom3)
$raiz:=“soapenv:Envelope”
$namespace:=“http://schemas.xmlsoap.org/soap/envelope/
$aNSNom1:=“xmlns:tem”
$aNSNom2:=“xmlns:tes”
$namespace1:=“http://tempuri.org/
$namespace2:=“http://schemas.datacontract.org/2004/07/TES.V33.CFDI.Negocios
$root:=DOM Create XML Ref($raiz;$namespace;$aNSNom1;$namespace1;$aNSNom2;$namespace2)
If (OK=0)
DOM CLOSE XML($root)
Else
$vxPath:="/soapenv:Envelope"
$vxPath:=$vxPath+"/soapenv:Header"
$subelem:=DOM Create XML element($root;$vxPath)

$vxPath:="/soapenv:Envelope"
$vxPath:=$vxPath+"/soapenv:Body"
$subelem:=DOM Create XML element($root;$vxPath)

$vxPath:=$vxPath+"/tem:ObtenerNumerosCreditos"
$subelem:=DOM Create XML element($root;$vxPath)

$vxPath:=$vxPath+"/tem:credenciales"
$subelem:=DOM Create XML element($root;$vxPath)

$subelem:=DOM Create XML element($root;$vxPath+"/tes:Cuenta")
DOM SET XML ELEMENT VALUE($subelem;$2)

$subelem:=DOM Create XML element($root;$vxPath+"/tes:Password")
DOM SET XML ELEMENT VALUE($subelem;$3)

$subelem:=DOM Create XML element($root;$vxPath+"/tes:Usuario")
DOM SET XML ELEMENT VALUE($subelem;$1)

SET WEB SERVICE PARAMETER(“XMLIn”;$root)


DOM CLOSE XML($root)

</code 4D>
Pero si alguien sabe sobre la documentación del porque debe ser declarado así por favor compártanla.

Pues el hecho de que no se consumía el Web Service era por que, sin querer, al hacer yo estas declaraciones el <soapenv:Envelope se duplicaba en el request y entonces la solución anterior estaba mal
aquí dejo la correcta:
<code 4D>

metodo:=Method called on error
C_STRING(16;$root)
C_STRING(16;$subelem)
C_TEXT($namespace;$namespace1;$namespace2;$aNSNom1;$aNSNom2)
$aNSNom1:=“xmlns:tem”
$aNSNom2:=“xmlns:tes”
$namespace:=“http://tempuri.org/
$namespace1:=“http://tempuri.org/
$namespace2:=“http://schemas.datacontract.org/2004/07/TES.V33.CFDI.Negocios

ON ERR CALL(“manejaErrorSoap”)

$root:=DOM Create XML Ref(“ObtenerNumerosCreditos”;$namespace;$aNSNom1;$namespace;$aNSNom2;$namespace2)

If(OK=0)
DOM CLOSE XML($root)
Else
$vxPath:="/ObtenerNumerosCreditos"

$vxPath:=$vxPath+"/tem:credenciales"

$subelem:=DOM Create XML element($root;$vxPath)

$subelem:=DOM Create XML element($root;$vxPath+"/tes:Cuenta")
DOM SET XML ELEMENT VALUE($subelem;$2)

$subelem:=DOM Create XML element($root;$vxPath+"/tes:Password")
DOM SET XML ELEMENT VALUE($subelem;$3)

$subelem:=DOM Create XML element($root;$vxPath+"/tes:Usuario")
DOM SET XML ELEMENT VALUE($subelem;$1)

SET WEB SERVICE PARAMETER(“XMLIn”;$root)


CALL WEB SERVICE(“http://www.fel.mx/CR33Test/ConexionRemota.svc";“http://tempuri.org/IConexionRemota/ObtenerNumerosCreditos”;“ObtenerNumerosCreditos”;"http://tempuri.org/Imports”;Web Service Manual)

DOM CLOSE XML($root)
End if
ON ERR CALL("")

</code 4D>
Pero debo documentarme bien…