O.T. Usando XML con xHarbour ( 2 parte )

O.T. Usando XML con xHarbour ( 2 parte )

Postby thefull » 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__)
User avatar
thefull
 
Posts: 731
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona

Postby Otto » Thu Oct 02, 2008 5:11 pm

Hello thefull,

would you be so kind to post a working sample.
Thanks in advance
Otto
User avatar
Otto
 
Posts: 6304
Joined: Fri Oct 07, 2005 7:07 pm

Postby Ricardo Ramirez E. » 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
User avatar
Ricardo Ramirez E.
 
Posts: 161
Joined: Wed Jan 25, 2006 10:45 am
Location: Praia - Cape Verde

Postby thefull » Tue Oct 07, 2008 3: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__)
User avatar
thefull
 
Posts: 731
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona

Postby pymsoft » Thu Nov 27, 2008 3: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
User avatar
pymsoft
 
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia

Postby thefull » Thu Nov 27, 2008 4: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__)
User avatar
thefull
 
Posts: 731
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona

Postby pymsoft » Thu Nov 27, 2008 5:33 pm

Gracias!!!

ya estoy probando.


saludos
Pedro Gonzalez
User avatar
pymsoft
 
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia

Dudas

Postby ermatica » Mon Dec 15, 2008 3: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í:
Code: Select all  Expand view
  <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
ermatica
 
Posts: 44
Joined: Mon Nov 12, 2007 1:50 pm
Location: España

Postby joseluisysturiz » Tue Dec 16, 2008 4:53 pm

...
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Dudas

Postby thefull » Tue Dec 16, 2008 5: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__)
User avatar
thefull
 
Posts: 731
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona

Duda

Postby ermatica » Tue Dec 16, 2008 9:28 pm

En primer lugar darte las gracias por contestar,


Parte del código (faltan mas nodos finales):
Code: Select all  Expand view
              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):
Code: Select all  Expand view
<?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
ermatica
 
Posts: 44
Joined: Mon Nov 12, 2007 1:50 pm
Location: España

Postby joseluisysturiz » 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!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Duda

Postby thefull » 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__)
User avatar
thefull
 
Posts: 731
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona

Re:

Postby thefull » 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__)
User avatar
thefull
 
Posts: 731
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona

Re:

Postby joseluisysturiz » Wed Dec 17, 2008 2: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... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: carlos vargas, Google [Bot] and 66 guests