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