>DEFINE CLASS VFPDomhandler AS Session OLEPUBLIC > cVersion = 'MSXML2.DOMDOCUMENT.4.0' > oXml = .NULL. > >FUNCTION Init > LOCAL llRetVal > llRetVal = DODEFAULT() > IF llRetVal > *** instantiate the dom > This.oXML = CREATEOBJECT( This.cVersion ) > ENDIF > RETURN llRetVal >ENDFUNC > >FUNCTION Parse( tcFile ) > WITH This.oXml > .load( tcFile ) > This.ProcessNode( .DocumentElement ) > ENDWITH >ENDFUNC > >FUNCTION processnode( tonode ) > #DEFINE NODE_INVALID 0 > #DEFINE NODE_ELEMENT 1 > #DEFINE NODE_ATTRIBUTE 2 > #DEFINE NODE_TEXT 3 > #DEFINE NODE_CDATA_SECTION 4 > #DEFINE NODE_ENTITY_REFERENCE 5 > #DEFINE NODE_PROCESSING_INSTRUCTION 7 > #DEFINE NODE_COMMENT 8 > #DEFINE NODE_DOCUMENT 9 > #DEFINE NODE_DOCUMENT_TYPE 10 > #DEFINE NODE_DOCUMENT_FRAGMENT 11 > #DEFINE NODE_NOTATION 12 > > *** Next see if we have any attributes > This.GetAttributes( toNode ) > > *** if this is a text node, use it to do whatever you want > IF toNode.NodeType = NODE_TEXT > ? toNode.NodeValue > ENDIF > > *** Process any kids > IF toNode.HasChildNodes > FOR EACH lochild in toNode.ChildNodes > This.ProcessNode( loChild ) > ENDFOR > ENDIF >ENDFUNC > >FUNCTION GetAttributes( toNode ) > LOCAL loAttributes, lnAttributes, lnAttr > loAttributes = toNode.Attributes > IF VARTYPE( loAttributes ) = 'O' > lnAttributes = loAttributes.Length - 1 > IF lnAttributes >= 0 > FOR lnAttr = 0 TO lnAttributes > ? loAttributes.Item[ lnAttr ].NodeName + [: ] + loAttributes.Item[ lnAttr ].NodeValue > ENDFOR > ENDIF > ENDIF >ENDFUNC >