Hola.
Necesito leer y generar archivos xml, ¿habra alguna clase para esto?
Muchas Gracias.
Jorge Jaurena
Manejo de archivos XML
Re: Manejo de archivos XML
Hola Jorge,
Mira estos post de Thefull:
http://forums.fivetechsupport.com/viewt ... &hilit=xml
http://forums.fivetechsupport.com/viewt ... &hilit=xml
Espero te ayuden,
Un saludo
Ernesto
Mira estos post de Thefull:
http://forums.fivetechsupport.com/viewt ... &hilit=xml
http://forums.fivetechsupport.com/viewt ... &hilit=xml
Espero te ayuden,
Un saludo
Ernesto
-
- Posts: 145
- Joined: Fri Oct 21, 2005 6:35 pm
Re: Manejo de archivos XML
Gracias por la respuesta, me resulto muy util, pero necesitaria manejar xml en Harbour, ¿se podra?
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Manejo de archivos XML
Harbour proporciona dos librerías para un uso muy eficiente de XML, ambas estan basadas en "Mini-XML":
http://www.minixml.org
Por un lado hay una versión desarrollada por Giancarlo Nicolai, que usa el codigo de MXML (Mini-XML) pero lo adapta a Harbour. El código esta desarrollado en lenguaje C y posiblemente sea muy eficiente (poco consumo de memoria y mucha velocidad de ejecución). Estas rutinas forman parte de la libreria xhb.lib de Harbour (fué un trabajo originalmente desarrollado para xHarbour y luego portado a Harbour).
La otra versión son wrappers a MiniXML usando el código original de MiniXML. Está en la carpeta hbmxml de contribs de Harbour. A ambas implementaciones se puede acceder desde el SVN en SourceForge de Harbour.
Aqui un ejemplo de uso de la implementación de Giancarlo:
xml1.prg
http://www.minixml.org
Por un lado hay una versión desarrollada por Giancarlo Nicolai, que usa el codigo de MXML (Mini-XML) pero lo adapta a Harbour. El código esta desarrollado en lenguaje C y posiblemente sea muy eficiente (poco consumo de memoria y mucha velocidad de ejecución). Estas rutinas forman parte de la libreria xhb.lib de Harbour (fué un trabajo originalmente desarrollado para xHarbour y luego portado a Harbour).
La otra versión son wrappers a MiniXML usando el código original de MiniXML. Está en la carpeta hbmxml de contribs de Harbour. A ambas implementaciones se puede acceder desde el SVN en SourceForge de Harbour.
Aqui un ejemplo de uso de la implementación de Giancarlo:
xml1.prg
Code: Select all
#include "hbxml.ch"
PROCEDURE Main()
LOCAL cFile := hb_dirBase() + "test.xml"
LOCAL cString
LOCAL cNote, cDiscount
LOCAL oDoc, oBook, oIterator, oCurrent
cString := MemoRead( cFile )
IF Empty( cString )
WAIT "xml file unavailable"
RETURN
ENDIF
oDoc := TXmlDocument():New( cString, HBXML_STYLE_NOESCAPE )
IF oDoc:nError != HBXML_ERROR_NONE
WAIT "xml file parsing error " + Str( oDoc:nError )
RETURN
ENDIF
oBook := oDoc:findfirst( "book" )
IF oBook == NIL
WAIT "no books found"
RETURN
ENDIF
DO WHILE .T.
IF "id" $ oBook:aAttributes
? "book ID : " + oBook:aAttributes[ "id" ]
ELSE
? "no attribute book ID"
ENDIF
cNote := ""
cDiscount := ""
oIterator := TXmlIterator():New( oBook )
DO WHILE .T.
oCurrent := oIterator:Next()
IF oCurrent == NIL
? "end branch"
WAIT "values : " + cNote + " " + cDiscount
EXIT
ELSE
? "current tag : " + oCurrent:cName
IF oCurrent:cName == "note"
cNote := oCurrent:cData
ELSEIF oCurrent:cName == "discount"
cDiscount := oCurrent:cData
ENDIF
ENDIF
ENDDO
oBook := oDoc:findnext()
IF oBook == NIL
WAIT "no more books found"
EXIT
ENDIF
ENDDO
RETURN
-
- Posts: 145
- Joined: Fri Oct 21, 2005 6:35 pm
Re: Manejo de archivos XML
Muchas gracias Antonio, es justo lo que necesitaba.
Saludos
Saludos