Testando gerar XML através de hash array

Só um teste que fiz aqui.
criação do hash:
rotina pra transformar em XML
criação do hash:
PROCEDURE Main
LOCAL hXml := hb_Hash(), a, b
SetMode(25,80)
CLS
Altd()
WITH OBJECT a := ( hXml[ "emit" ] := hb_Hash() )
a[ "CNPJ" ] := "00.000.000-00"
a[ "xNome" ] := "nome"
WITH OBJECT b := ( a[ "xenderEmit" ] := hb_hash() )
b[ "xLgr" ] := "logradouro"
b[ "nro" ] := "."
b[ "xBairro" ] := "bairro"
ENDWITH
ENDWITH
? HashToXml( hXml, 1 )
Inkey(0)
RETURN
rotina pra transformar em XML
FUNCTION HashToXml( hXml, nIndex )
LOCAL cXml := "", nCont, aItem
aItem := hb_HPairAt( hXml, nIndex )
cXml += "<" + aItem[ 1 ] + ">"
IF ValType( aItem[ 2 ] ) == "H"
cXml += hb_Eol()
FOR nCont = 1 TO Len( aItem[ 2 ] )
cXml += HashToXml( aItem[ 2 ], nCont )
cXml += hb_Eol()
NEXT
ELSE
cXml += aItem[ 2 ]
ENDIF
cXml += "</" + aItem[ 1 ] + ">"
RETURN cXml