>DEFINE CLASS MyCollection AS Custom > oCollection=null > FUNCTION INIT > THIS.oCollection=CREATEOBJECT("Collection") > ENDFUNC > FUNCTION ToString > LOCAL lcResult, loNumber > lcResult="" > FOR EACH loNumber IN THIS.oCollection > lcResult=lcResult+loNumber.ToString()+";" > ENDFOR > ENDFUNC >ENDDEFINE > >DEFINE CLASS MyNumber AS Custom > nNumber=0 > FUNCTION INIT > LPARAMETERS nNumber > THIS.nNumber=nNumber > ENDFUNC > FUNCTION ToString > RETURN ALLTRIM(STR(THIS.nNumber)) > ENDFUNC >ENDDEFINE >>The calling code :
>SET PROCEDURE TO wwUtils.prg, basic_objects.prg >SET CLASSLIB TO ../classlib/wwxml.vcx >LOCAL loXml, loColl, loColl2, loNumber, loNumber2, lcXml >loXml=CREATEOBJECT("wwxml") >loXml.lRecurseObjects=.T. >loColl=CREATEOBJECT("MyCollection") >loColl2=CREATEOBJECT("MyCollection") >loNumber=CREATEOBJECT("MyNumber",1) >loNumber2=CREATEOBJECT("MyNumber",2) >loColl.oCollection.Add(loNumber) >loColl2.oCollection.Add(loNumber2) >lcXml=loXml.ObjectToXml(loColl) >loColl2=loXml.XmlToObject(lcXml,loColl2) >? loColl2.ToString() >>