FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour O.T. Usando XML con xHarbour ( 2 parte )
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
O.T. Usando XML con xHarbour ( 2 parte )
Posted: Mon Sep 04, 2006 10:12 AM

Bueno, nos quedaba ver como crear un documento de XML,
alla vamos ;-)

Leccion: 3.0.- Guardaté, condenado...

Bien , nos quedaba pendiente el como guardar un documento XML, y mardita
la gracia , que no me di cuenta que , primero se construye el XML como
a uno le apetezca, y despues simplemente se guarda.

Para ello, tan simple como este ejemplo, para sacaros de dudas:

Creamos el documento EN MEMORIA!!!
oDoc := TXmlDocument():New()

Añadimos diferentes nodos:
oDoc:oRoot:AddBelow( TxmlNode():New( HBXML_TYPE_PI,'xml' , , 'version="1.0" encoding="iso-8859-1"' ) )
oDoc:oRoot:AddBelow( TxmlNode():New( HBXML_TYPE_COMMENT, , , "Ejemplo USO" ) )
oDoc:oRoot:AddBelow( TxmlNode():New( HBXML_TYPE_COMMENT, , , "Date: " + DToC( Date() ) + " Time: " + Time() ) )
oDoc:oRoot:AddBelow( TxmlNode():New( HBXML_TYPE_COMMENT, , , "Last access: " + GetEnv( "USERNAME" ) ) )

Como habiamos comentado, oRoot es la raiz, por lo tanto, estamos usando
la raiz del arbol para ir añadiendo nodos hijos, a traves del method
AddBelow( oNode )

Tambien , podemos observar como crear un nodo, y este con otros nodos
con sus propiedades:

oNewNodo := TxmlNode():New( HBXML_TYPE_TAG, "NUEVO" )

oConfig := TxmlNode():New( HBXML_TYPE_TAG, "config" )
oConfig:SetAttribute( "reserva", "222" )
oConfig:SetAttribute( "habitacion", "AB2" )

Fijaros como añadimos el nodo llamado oConfig, al nodo oNewNodo.
oNewNodo:AddBelow( oConfig )

Y el nodo , oNewNodo, al arbol principal del documento del XML
oDoc:oRoot:AddBelow( oNewNodo )

Bien, ahora, simplemente creamos el fichero donde volcar toda esta informacion
hFile := FCreate( "pepe.xml" )
If hFile != -1
// Y ESTO GUARDO EL TRABAJO QUE HABIAMOS REALIZADO!!!
oDoc:Write( hFile, HBXML_STYLE_INDENT + HBXML_STYLE_THREESPACES )
FClose( hFile )
Endif

Ya esta!!! Parece mentira, no es tan dificil cuando ves esto puesto en el
codigo fuente, que es lo que nos faltaba.

Agracedimientos:
A freddy,
sin su explicacion, no creo que hubiese comprendido la importancia
del uso de las clases de xHarbour

A Giancarlo,
por su estupendo trabajo realizado en xHarbour.
( Por cierto, esta documentado, pero...el english no es mi fuerte...
haber si alguien se anima a traducir el texto hbxml. )

Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 6983
Joined: Fri Oct 07, 2005 07:07 PM
O.T. Usando XML con xHarbour ( 2 parte )
Posted: Thu Oct 02, 2008 05:11 PM

Hello thefull,

would you be so kind to post a working sample.
Thanks in advance
Otto

Posts: 161
Joined: Wed Jan 25, 2006 10:45 AM
O.T. Usando XML con xHarbour ( 2 parte )
Posted: Thu Oct 02, 2008 11:25 PM

Rafa :

Gracias por compartir tus experiencias y conocimientos....

Saludos

Ricardo R.

xHarbour 1.1.0 Simplex , Microsoft Visual Studio 2008, Bcc55, Fwh Build. 9.01
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
O.T. Usando XML con xHarbour ( 2 parte )
Posted: Tue Oct 07, 2008 03:55 PM
Otto wrote:Hello thefull,

would you be so kind to post a working sample.
Thanks in advance
Otto


Otto, I do not understand you mean.
This post tries to explain how to handle create / read an XML from xHarbour.
If you refer you want to do, perhaps we can help put a concrete example

Regards
Rafa Carmona
Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 383
Joined: Tue Oct 11, 2005 01:01 PM
O.T. Usando XML con xHarbour ( 2 parte )
Posted: Thu Nov 27, 2008 03:56 PM

Rafa,

Gracias por tu explicacion, ya lo habia leido hace algun tiempo, no imaginé que iba a necesitar usarlo tan pronto.

De todos modos, como hago para salvar todo en UTF-16? Hay alguna funcion para pasar el texto a UTF-16?

Gracias.

Pedro Gonzalez
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
O.T. Usando XML con xHarbour ( 2 parte )
Posted: Thu Nov 27, 2008 04:19 PM
pymsoft wrote:Rafa,

Gracias por tu explicacion, ya lo habia leido hace algun tiempo, no imaginé que iba a necesitar usarlo tan pronto.

De todos modos, como hago para salvar todo en UTF-16? Hay alguna funcion para pasar el texto a UTF-16?

Gracias.


Bueno yo uso unas funciones Kevin Carmody, i@kevincarmody.com,
busca por UnicodeConvert.prg en Internet;
http://www.hmgextended.com/files/CONTRI ... onvert.prg

Lo que no sé si te servirá para UTF-16, yo lo uso para UTF-8 y va de muerte, código PRG puro y duro :-)

Mirate la funcion UNITOU8() y similares por si te sirve de algo.
Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 383
Joined: Tue Oct 11, 2005 01:01 PM
O.T. Usando XML con xHarbour ( 2 parte )
Posted: Thu Nov 27, 2008 05:33 PM

Gracias!!!

ya estoy probando.

saludos

Pedro Gonzalez
Posts: 44
Joined: Mon Nov 12, 2007 01:50 PM
Dudas
Posted: Mon Dec 15, 2008 03:07 PM
Buenas Tardes Rafa (Thefull),

He empezado a usar esta clase en xHarbour y con tus explicaciones ha sido bastante sencillo. Tengo dos problemillas, el XML que tengo que generar es así:
  <MATRICULACION ProcesarMatriculacion="0" Procesar576="0" Procesar05_06="0" ProcesarIMVTM="0">
    <NUMERO_EXPEDIENTE></NUMERO_EXPEDIENTE>
    <NUMERO_DOCUMENTO>TF000940402008017018</NUMERO_DOCUMENTO>
    <NUMERO_PROFESIONAL>000000</NUMERO_PROFESIONAL>


- En primer lugar el "identado" es de 2 espacios y no logro combinar dicha identación.

- Y en segundo lugar los "atributos" del TAG MATRICULACION, cuando los coloco en ese orden, no salen así, sino que los ordena de otra manera (he visto algo relacionado con el hash), cómo se deberían colocar para que salgan en el orden que uno quiere.

Muchas gracias de antemano.
Saludos
Ernesto
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
O.T. Usando XML con xHarbour ( 2 parte )
Posted: Tue Dec 16, 2008 04:53 PM

...

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re: Dudas
Posted: Tue Dec 16, 2008 05:58 PM

Puedes poner el codigo fuente que generas eso ?

Sobre la indentacion , para que lo quieres ? eso no tiene ninguna importancia, como si estuviese todo en una linea.
Es una propiedad que le das a la hora de crear el documento XML.

Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 44
Joined: Mon Nov 12, 2007 01:50 PM
Duda
Posted: Tue Dec 16, 2008 09:28 PM
En primer lugar darte las gracias por contestar,


Parte del código (faltan mas nodos finales):
              oDoc:=TXMLDocument():New()
              oDoc:oRoot:AddBelow( TxmlNode():New(HBXML_TYPE_PI,'xml',,'version="1.0" encoding="ISO-8859-1"') )

              oNewNodo:=TxmlNode():New(HBXML_TYPE_TAG,"FORMATO_GA")
              oNewNodo:SetAttribute("FechaCreacion",dtoc(Date()) )
              oDoc:oRoot:AddBelow(oNewNodo)

                oCabe:=TxmlNode():New(HBXML_TYPE_TAG,"CABECERA")
                oNewNodo:AddBelow(oCabe)

                  oGest:=TxmlNode():New(HBXML_TYPE_TAG,"DATOS_GESTORIA")
                  oCabe:AddBelow(oGest)

                    oNifGest := TxmlNode() : New( HBXML_TYPE_TAG ,"NIF",,cNif_Gestoria )
                    oGest:AddBelow(oNifGest)

                    oNomGest := TxmlNode() : New( HBXML_TYPE_TAG ,"NOMBRE",,cNombre1_Gestoria )
                    oGest:AddBelow(oNomGest)

                    oProfGest := TxmlNode() : New( HBXML_TYPE_TAG ,"PROFESIONAL",,cProfesional_Gestoria )
                    oGest:AddBelow(oProfGest)

                    oProvGest := TxmlNode() : New( HBXML_TYPE_TAG ,"PROVINCIA",,cProvincia_Gestoria )
                    oGest:AddBelow(oProvGest)

              
                oMatri:=TxmlNode():New(HBXML_TYPE_TAG,"MATRICULACION")
                oMatri:SetAttribute("ProcesarMatriculacion","0" )
                oMatri:SetAttribute("Procesar576","0" )
                oMatri:SetAttribute("Procesar05_06","0" )
                oMatri:SetAttribute("ProcesarIMVTM","0" )
                oNewNodo:AddBelow(oMatri)

                  cNroExp:=""
                  oNroExp := TxmlNode() : New( HBXML_TYPE_TAG ,"NUMERO_EXPEDIENTE",,cNroExp )
                  oMatri:AddBelow(oNroExp)

                  cNroDoc:=alltrim(substr( (cAlias3)->A158,1,30) )
                  oNroDoc := TxmlNode() : New( HBXML_TYPE_TAG ,"NUMERO_DOCUMENTO",,cNroDoc )
                  oMatri:AddBelow(oNroDoc)

                  cNroProf:=alltrim( substr(mNROGES,1,5) )             
                  oNroProf := TxmlNode() : New( HBXML_TYPE_TAG ,"NUMERO_PROFESIONAL",,cNroProf )
                  oMatri:AddBelow(oNroProf)
           
               ...
               

              nMANEJADOR:=0
              IF (nMANEJADOR:=FCREATE(mPath_Pdf+cFichero+"XML",0))=-1
                  msgAlert( "Error Creación Fichero XML","AVISO")
              else
                  oDoc:Write(nMANEJADOR,HBXML_STYLE_INDENT + HBXML_STYLE_THREESPACES )
                  FClose(nMANEJADOR)
              ENDIF


Y esto es el .XML que genera (el principio):
<?xml version="1.0" encoding="ISO-8859-1"?>
<FORMATO_GA FechaCreacion="16/12/2008">
   <CABECERA>
      <DATOS_GESTORIA>
         <NIF>43999999V</NIF>
         <NOMBRE>NOMBRE COMPLETO DEL</NOMBRE>
         <PROFESIONAL>00001</PROFESIONAL>
         <PROVINCIA>M</PROVINCIA>
      </DATOS_GESTORIA>
   </CABECERA>
   <MATRICULACION Procesar05_06="0" Procesar576="0" ProcesarIMVTM="0" ProcesarMatriculacion="0">
      <NUMERO_EXPEDIENTE></NUMERO_EXPEDIENTE>
      <NUMERO_DOCUMENTO>TF002750402008152712</NUMERO_DOCUMENTO>
      <NUMERO_PROFESIONAL>00001</NUMERO_PROFESIONAL>


Como puedes ver en el nodo MATRICULACION aparecen los atributos con un orden distinto al puesto en el código.


Un cordial saludo
Ernesto
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
O.T. Usando XML con xHarbour ( 2 parte )
Posted: Tue Dec 16, 2008 10:51 PM

Bueno, nos quedaba ver como crear un documento de XML,
alla vamos ;-)

Leccion: 3.0.- Guardaté, condenado...

thefull, podrias colocar el link de las primeras partes..? gracias...

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re: Duda
Posted: Wed Dec 17, 2008 10:41 AM

Es curioso si, parece ser un tema de Hash, que efectua una ordenación de los atributos, quizás... no lo he visto, pero tiene toda la pinta.

De todas maneras, esto NO TIENE mayor importancia.

Me tiene intrigado el tema, ¿ cual es el problema exactamente ?
Esto es como:

"El orden de los factores no altera el resultado" :-)

Saludos
Rafa Carmona

Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re:
Posted: Wed Dec 17, 2008 11:05 AM

No cuesta mucho buscar en los foros, fijate arriba de la pagina, por si no lo has visto;

http://forums.fivetechsoft.com/viewtopi ... hlight=xml

Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re:
Posted: Wed Dec 17, 2008 02:45 PM
thefull wrote:No cuesta mucho buscar en los foros, fijate arriba de la pagina, por si no lo has visto;
http://forums.fivetechsoft.com/viewtopi ... hlight=xml

TheFull, disculpa la molestia, pero hice la busqueda como siempre por el tema O.T. Usando XML en xHarbour y me salieron 3200 coincidencias, llevaba varias paginas y no lo veia y le dije por palabras exactas y salio que no habia coincidencia, por eso hice la solicitud, gracias de todas maneras, uso la BUSQUEDA desde siempre, a lo mejor la pase entre las coincidencias y no vi el tema, aunque esta facil por el O.T, pero bueno, ya lo tengo y le hare el seguimiento ya que me interesa el tema, gracias una ves mas por tus aportes.saludos... :-)
Dios no está muerto...



Gracias a mi Dios ante todo!