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. )
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. )