Article: Q253713
Product(s): Microsoft FoxPro
Version(s): 2.5,2.6,3.0,6.0
Operating System(s):
Keyword(s): kbDatabase kbInternet kbvfp600 KbDBFDBC kbXML kbGrpDSFox kbDSupport kbMSXML kbGrpDSMSXM
Last Modified: 06-DEC-2000
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Visual FoxPro for Windows, version 6.0
- Microsoft XML, versions 2.5, 2.6, 3.0
-------------------------------------------------------------------------------
SUMMARY
=======
This is a simple example of how the Microsoft XML parser (MSXML) object can be
used to move XML data from an XML document into a Microsoft FoxPro table. A
FoxPro table similar in structure to the Orders table is created and the data in
the XML document is moved to the table.
MORE INFORMATION
================
This example uses the MSXML parser to move data from an XML document to a FoxPro
table. The parser is available at:
http://msdn.microsoft.com/xml/default.asp
This code takes the XML document below, creates a new table called SampOrd and
populates the table with the XML data.
NOTE: Ensure that any XML document to be used as a datasource for the sample code
below has a root tag or basename in the document; otherwise an error might
occur.
1. Install the MSXML parser.
2. Create an XML document from the XML code below.
3. Create a FoxPro program file with the following code and then run the
program:
CREATE TABLE SampOrd ( ;
order_id c(10), ;
cust_id c(10), ;
emp_id c(10), ;
to_name c(25), ;
to_address c(50), ;
to_city c(25), ;
to_region c(10), ;
postalcode c(10), ;
to_country c(15), ;
ship_count c(15), ;
ship_via c(6), ;
order_date c(8), ;
order_amt c(10), ;
order_dsc c(10), ;
order_net c(10), ;
require_by c(8), ;
shipped_on c(8), ;
freight c(10))
*** Uncomment the following line if you want access to oXML
*** outside of this program.
*PUBLIC oXML
oXML=CREATEOBJECT('msxml.domdocument') && This creates the parser object
oXML.LOAD(GETFILE('xml')) && This gets and loads the XML document.
*** Select the XML document created from the XML code below.
*** The following gives the basename of the XML document
*?oXML.DocumentElement.Basename
*** The following gives the number of nodes (or records)
*?oXML.documentelement.childnodes.LENGTH
** The following snippet appends a blank record and parses
** through each node element and adds it to the table.
** REMEMBER that the object model is in base zero.
WITH oXML.DocumentElement.ChildNodes
FOR iCount = 0 TO .LENGTH - 1
APPEND BLANK
FOR iChild = 0 TO .ITEM(0).ChildNodes.LENGTH - 1
lcVar = .ITEM(iCount).ChildNodes(iChild)
REPLACE (lcVar.NodeName) WITH (lcVar.TEXT)
ENDFOR
ENDFOR
ENDWITH
BROWSE
XML Code
--------
<orders_table>
<orders>
<order_id> 10040</order_id>
<cust_id>WHITC </cust_id>
<emp_id> 3</emp_id>
<to_name>White Clover Markets </to_name>
<to_address>1029 - 12th Ave. S. </to_address>
<to_city>Bellevue </to_city>
<to_region>WA </to_region>
<postalcode>98124 </postalcode>
<to_country>USA </to_country>
<ship_count>USA </ship_count>
<ship_via> 3</ship_via>
<order_date>09/09/93</order_date>
<order_amt>$1,991.00</order_amt>
<order_dsc>10</order_dsc>
<order_net>$1,842.88</order_net>
<require_by>10/07/93</require_by>
<shipped_on>09/18/93</shipped_on>
<freight>$51.88</freight>
</orders>
<orders>
<order_id> 10095</order_id>
<cust_id>LAZYK </cust_id>
<emp_id> 3</emp_id>
<to_name>Lazy K Kountry Store </to_name>
<to_address>12 Orchestra Terrace </to_address>
<to_city>Walla Walla </to_city>
<to_region>WA </to_region>
<postalcode>99362 </postalcode>
<to_country>USA </to_country>
<ship_count>USA </ship_count>
<ship_via> 3</ship_via>
<order_date>12/10/93</order_date>
<order_amt>$530.00</order_amt>
<order_dsc>10</order_dsc>
<order_net>$479.58</order_net>
<require_by>01/07/94</require_by>
<shipped_on>12/11/93</shipped_on>
<freight>$2.58</freight>
</orders>
</orders_table>
- If a root tag or basename is not in the XML document, usually an "OLE error
0x00000001: Incorrect function" error occurs.
REFERENCES
==========
For additional information on XML, click the article number below to view the
article in the Microsoft Knowledge Base:
Q191758 HOWTO: Convert FoxPro Cursor into XML Data Format
For more information about XML, see the following Web sites:
http://msdn.microsoft.com/xml/default.asp
http://www.xml.com
Additional query words:
======================================================================
Keywords : kbDatabase kbInternet kbvfp600 KbDBFDBC kbXML kbGrpDSFox kbDSupport kbMSXML kbGrpDSMSXML
Technology : kbVFPsearch kbAudDeveloper kbMSXMLSearch kbVFP600 kbMSXML250 kbMSXML260 kbMSXML300
Version : :2.5,2.6,3.0,6.0
Issue type : kbhowto
=============================================================================