DO clearenv >LOCAL oxa AS xmladapter >oxa=CREATEOBJECT("xmladapter") > >? >? >? >? "First, look at the original XML (in testing.xml)" > >WAIT WINDOW "Press a key to view the XML" >CLEAR > >* show the beginning XML file >MODIFY FILE testing.xml NOMODIFY > >* tell XMLAdapter we don't have a schema >oxa.XMLSchemaLocation="" >* strip out namespace from first element >* and wrap everything after the XML tag inside >* a new Root element. This allows us to then use >* XPath to point to the tables and fields inside >* the <Root></Root> tags. >oxa.LoadXML( ; > STRTRAN(STRTRAN(FILETOSTR("testing.xml"), ; > [xmlns="http://www.Somesite.com/SomeWebService"],[]),; > "?>", "?><Root>") + "</Root>" ) > >* now output the resulting XML structure to show >* what was loaded into the oxa.IXMLDOMElement.xml >? >? >? >? "Now output the resulting XML structure to show" >? "what was loaded into the oxa.IXMLDOMElement.xml" >TEXT >STRTOFILE(oxa.IXMLDOMElement.xml, "FromDOM.txt") >MODIFY FILE FromDOM.txt NOMODIFY >ENDTEXT >WAIT WINDOW "Press a key to show the resulting XML" > >STRTOFILE(oxa.IXMLDOMElement.xml, "FromDOM.txt") >MODIFY FILE FromDOM.txt NOMODIFY >CLEAR >? >? >? >? "Ready to create the cursors" >? "Escape each Browse to create the next table" >? >? "NOTE: You will have to add more XMLField" >? "objects in the code to get all the fields" >WAIT WINDOW "Press a key to create the cursors" > >* GetFileResult table >oTable = CREATEOBJECT("XMLTable") >oTable.XMLName = STRCONV("getFileResult",5) >oTable.XMLNameIsXpath = .T. >oTable.Alias = "GetFileResult" > >oField = CREATEOBJECT("XMLField") >oField.XMLName = STRCONV("dataError",5) >oField.XMLNameIsXpath = .T. >oField.Alias = "dataerror" >oField.DataType = "L" >oTable.Fields.Add(oField, oField.XMLName) > >oField = CREATEOBJECT("XMLField") >oField.XMLName = STRCONV("errorString",5) >oField.XMLNameIsXpath = .T. >oField.Alias = "errorString" >oField.DataType = "M" >oTable.Fields.Add(oField, oField.XMLName) > >oField = CREATEOBJECT("XMLField") >oField.XMLName = STRCONV("tblFilesID",5) >oField.XMLNameIsXpath = .T. >oField.Alias = "tblFilesID" >oField.DataType = "I" >oTable.Fields.Add(oField, oField.XMLName) > >oField = CREATEOBJECT("XMLField") >oField.XMLName = STRCONV("openDate",5) >oField.XMLNameIsXpath = .T. >oField.Alias = "opendate" >oField.DataType = "T" >oTable.Fields.Add(oField, oField.XMLName) > >oField = CREATEOBJECT("XMLField") >oField.XMLName = STRCONV("closeDate",5) >oField.XMLNameIsXpath = .T. >oField.Alias = "closedate" >oField.DataType = "T" >oTable.Fields.Add(oField, oField.XMLName) > >oField = CREATEOBJECT("XMLField") >oField.XMLName = STRCONV("tblUsersID_Originator",5) >oField.XMLNameIsXpath = .T. >oField.Alias = "tblUsersID_Originator" >oField.DataType = "I" >oTable.Fields.Add(oField, oField.XMLName) > >*** You add more fields here for this table > >oxa.Tables.Add(oTable, oTable.XMLName) > >* escrowInfo table >oTable = CREATEOBJECT("XMLTable") >oTable.XMLName = STRCONV("getFileResult/escrowInfo",5) >oTable.XMLNameIsXpath = .T. >oTable.Alias = "escrowinfo" > >oField = CREATEOBJECT("XMLField") >oField.XMLName = STRCONV("dataError",5) >oField.XMLNameIsXpath = .T. >oField.Alias = "dataerror" >oField.DataType = "L" >oTable.Fields.Add(oField, oField.XMLName) > >oField = CREATEOBJECT("XMLField") >oField.XMLName = STRCONV("errorString",5) >oField.XMLNameIsXpath = .T. >oField.Alias = "errorString" >oField.DataType = "M" >oTable.Fields.Add(oField, oField.XMLName) > >oField = CREATEOBJECT("XMLField") >oField.XMLName = STRCONV("tblFilesID",5) >oField.XMLNameIsXpath = .T. >oField.Alias = "tblFilesID" >oField.DataType = "I" >oTable.Fields.Add(oField, oField.XMLName) > >oField = CREATEOBJECT("XMLField") >oField.XMLName = STRCONV("EscrowNumber",5) >oField.XMLNameIsXpath = .T. >oField.Alias = "escrownumber" >oField.DataType = "C" >oField.MaxLength = 20 >oTable.Fields.Add(oField, oField.XMLName) > >oField = CREATEOBJECT("XMLField") >oField.XMLName = STRCONV("EstimatedCloseDate",5) >oField.XMLNameIsXpath = .T. >oField.Alias = "estimatedclosedate" >oField.DataType = "T" >oTable.Fields.Add(oField, oField.XMLName) > >*** You add more fields here > >oxa.Tables.Add(oTable, oTable.XMLName) > >* titleInfo table >oTable = CREATEOBJECT("XMLTable") >oTable.XMLName = STRCONV("getFileResult/titleInfo",5) >oTable.XMLNameIsXpath = .T. >oTable.Alias = "titleinfo" > >oField = CREATEOBJECT("XMLField") >oField.XMLName = STRCONV("dataError",5) >oField.XMLNameIsXpath = .T. >oField.Alias = "dataerror" >oField.DataType = "L" >oTable.Fields.Add(oField, oField.XMLName) > >*** You add the remaining fields here > >oxa.Tables.Add(oTable, oTable.XMLName) > >* addressInfo table >oTable = CREATEOBJECT("XMLTable") >oTable.XMLName = STRCONV("getFileResult/addressInfo",5) >oTable.XMLNameIsXpath = .T. >oTable.Alias = "addressinfo" > >oField = CREATEOBJECT("XMLField") >oField.XMLName = STRCONV("dataError",5) >oField.XMLNameIsXpath = .T. >oField.Alias = "dataerror" >oField.DataType = "L" >oTable.Fields.Add(oField, oField.XMLName) > >*** You add the remaining fields here > >oxa.Tables.Add(oTable, oTable.XMLName) > >* now output and browse the 4 cursors >oxa.tables(1).toCursor() >BROWSE >oxa.tables(2).toCursor() >BROWSE >oxa.tables(3).toCursor() >BROWSE >oxa.tables(4).toCursor() >BROWSE >CLEAR