*One approach might be (assuming you have an XML organized [something] >*like this: >(xml) > (table} > (rows) > (row) . some data as additional nodes or attributes . (/row) > (row) . some data as additional nodes or attributes . (/row) > (row) . some data as additional nodes or attributes . (/row) > (/rows) > (/table) > >*Okay - let's say you're only interested in the "row" elements that are *children the (rows) element. >*Start your XML >oXML=CREATEOBJECT("MSXML2.DOMDocument.4.0") &&Try an implicit connect to 4.0 >oXML.async=.f. >oXML.setProperty("SelectionLanguage","XPath") >oXML.load(GETFILE()) && You may need to be local to the folder > && to assure the XSD's merge > && ALso note that 4.0 will merge XSD's that > && Earlier XML objects "will not" merge. >* Now create a reference to the (rows) element: >oRows=oXML.selectSingleNode("*//*[local-name()='rows']") >* Ho many (row) are in (rows) >?oRows.length >* To point to a "row" >oRow=oRows.item(n) >* If the fields are stored as tags >oFields=oRow.childNodes >* If the fields are stored as attributes >oFields=oRow.attributes >* You could then address the nodenames and node texts or values using >* a loop, or "literally" request the node names (in either case). >* With attributes, some may be missing, you might need to verify they are >* of the parent element: >IF TYPE('oFields.getAttribute("txtSomeAttributeName")')==[C] >* returns a "True", the attribute is there. >* I am not sure about elements - I think I have written XMLs with an empty >* element "(row)(/row). >* You can also get a different result (a more exclusive set - fewer items) >* depending on your XML heirarchy (i dont know why): >oRow=oRows.selectNodes("*[local-name()='row']") >>There are features that associated with the tag when addressed as a "childNodes" and features that are associated when item(s) are addressed.
>>>loXml = CreateObject("Microsoft.XMLDOM") >>>loXml.Load ( YourXMLString ) >>>loRoot = loXML.documentElement >>>IF ISNULL( loRoot ) >>> RETURN 'Invalid XML' >>>ENDIF >>>loElement = loRoot.selectSingleNode( "CustomerName" ) >>>lCustomerName = iif(!ISNULL(loElement),allt(loElement.Text),"" ) >>> >>>lOrderNumbers = loRoot.selectNodes ("Orders/OrderNumber") >>>for each loElement in lOrderNumbers >>> ? loElement.Text >>>endfor >>> >>>** you can also try loRoot.selectNodes ( "Orders/Blabla/Blablabla" ) >>>>>>