Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Consulta sobre nodo
Message
From
11/01/2012 06:14:05
 
 
To
10/01/2012 12:51:23
Luis Parada
Prosoft´s de Venezuela, C.A.
Valencia, Venezuela
General information
Forum:
Visual FoxPro
Category:
Other
Environment versions
Visual FoxPro:
VFP 9 SP1
OS:
Windows 7
Network:
Windows 2003 Server
Database:
MS SQL Server
Miscellaneous
Thread ID:
01532650
Message ID:
01532720
Views:
68
Likes (1)
Luis,

This is a simple way for your xml file. It goes one level down
#include	"FoxPro.h"
#define TRUE	.t.
#define FALSE	.f.

*_______________________________________________________________________________
function do_it()

	local obj, collectionObj, entry
	
	
	obj = createObject('xmlTest')
	if( m.obj.Parse(@m.collectionObj, 'd:\tmp\01532650.xml') )
		for each entry in m.collectionObj
		
			?entry.CodigoArticulo, entry.TotalArticulos
			
		endfor
		
	endif
	
	
	
	
endfunc
*_______________________________________________________________________________
#define	DOMDOCUMENT_CLASS		[Msxml2.DOMDocument.6.0]

define class xmlTest as relation
	
	protected DomDocument_Obj
	
*_______________________________________________________________________________
protected function init()

	local success
	success = true
	
	do case
	case !m.success
	
	case !DoDefault()
		asser false
		success = false
	
	otherwise
		try
			this.DomDocument_Obj = createObject(DOMDOCUMENT_CLASS)
			this.DomDocument_Obj.Async = false
			this.DomDocument_Obj.ValidateOnParse = true
		
		catch
			assert false
			success = false
		
		endtry
	
	endcase
	
	return m.success

endfunc
*_______________________________________________________________________________
protected function Destroy()
	
	store null to ;
		this.DomDocument_Obj
	
	return DoDefault()
	
endfunc
*_______________________________________________________________________________
function Parse(collectionObj, xmlFile)

	local success
	success = true
	
	collectionObj = createobject('Collection')
	
	do case
	case !m.success
	
	otherwise
		try
			=m.this.DomDocument_Obj.Load(m.XmlFile)
			
		catch
			assert false
			success = false
		endtry
	endcase
	
	

	do case
	case !m.success
	
	otherwise
		local nodeList, i
		nodeList = m.this.DomDocument_Obj.selectNodes("//"+"Articulos")
		
		for i = 1 to m.nodeList.Length - 1
		
			
			if( !m.this.AddNode(m.collectionObj, m.nodeList.Item(m.i)) )
				assert false
				success = false
				exit
			endif
		endfor
		
	endcase
	

	return m.success

endfunc
*_______________________________________________________________________________
protected function AddNode(collectionObj, node)

	
	local success
	success = true
	
	local nodeObj, childObj
	nodeObj = createobject('Empty')
	childObj = m.node.FirstChild
	
	do while m.success and !isNull(m.childObj)
		
		=AddProperty(m.nodeObj, m.childObj.nodename, m.childObj.Text)
		childObj = m.childObj.nextSibling
	
	
	enddo
	
	do case
	case !m.success
	
	case !m.collectionObj.Add(m.nodeObj)
		assert false
		success = false
	
	endcase
	return m.success

endfunc
*_______________________________________________________________________________
*_______________________________________________________________________________
enddefine
>Muy Buenas Tardes.
>Muchas gracias de antemano
>
>Tengo el archivo XML
>adjunto la imagen del xml
>
>
>Quisiera que me ayudaran en ¿Como seria la programación para poder capturar los valores de cada elementos?
>
>CodigoArticulo = CON-F105SIX
>TotalArticulo = 1.00000
>
>CodigoArticulo = CON-CFEA742-0/0
>TotalArticulos = 1.00000
>
>CodigoArticulo = CON-EF2401
>TotalArticulos =1.00000
>
>
>Mi programación es la siguiente:
>
>PUBLIC oDocDep
>
>oDocDep=Getfile("XML","Seleccione:","Abrir",0,"Archivos .XML")
>IF NOT Cargar_oDOM(oDocDep)
> RETURN .f.
>ENDIF
>
>Procedure Cargar_oDOM
> Lparameter oDoc As MSXML3.DOMDocument.4.0
> IF !EMPTY(oDoc)
> oDocumento = CREATEOBJECT("MSXML2.DOMDocument.4.0")
> lcXML=Filetostr(oDocDep)
> oDocumento.Load(oDocDep)
> oDocumento.validateOnParse = .F.
> oDocumento.Async = .F.
> IF oDocumento.ParseError.ErrorCode (diferente) 0
> Texto = [Hubo un error en el documento:] + CHR(13) ;
> + [ Linea: ] + TRANSFORM(oDocumento.parseError.Line) + CHR(13) ;
> + [Posición: ] + TRANSFORM(oDocumento.parseError.LinePos) + CHR(13) ;
> + [ razón: ] + TRANSFORM(oDocumento.parseError.Reason)
> =MESSAGEBOX( Texto, 16, [Error leyendo XML] )
> oDocumento = NULL
> RELEASE oDocumento
> ELSE
> olNodes = oDocumento.selectNodes("//"+"Articulos")
> IF olNodes.LENGTH menor= 0 THEN
> =MESSAGEBOX("Comprobante inválido. Nodo 'Articulos' no presente.",16,business_loc)
> RETURN .F.
> ENDIF
> ENDIF
> ELSE
> =MESSAGEBOX("No ha indicado un archivo XML válido",64,business_loc)
> RETURN .F.
> ENDIF
>ENDPROC
Gregory
Previous
Reply
Map
View

Click here to load this message in the networking platform