KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q253732: HOWTO: Use FoxPro and MSXML to Return Information About XML Doc

Article: Q253732
Product(s): Microsoft FoxPro
Version(s): 2.5,2.6,3.0,6.0
Operating System(s): 
Keyword(s): kbMiscTools kbvfp600 kbXML kbGrpDSFox kbDSupport kbMSXML kbGrpDSMSXML
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 simple example shows how to return values from an XML document using
Microsoft Visual FoxPro.

MORE INFORMATION
================

This example uses the Microsoft XML (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

The following code creates the Microsoft MSXML ActiveX object to accesses
information contained in an XML document and displays it:

1. Install the MSXML parser.

2. Create the XML document by copying the sample XML code below to a text file
  and name the file with the extension .

3. Create a FoxPro program file with the following code and run the 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 / RootElemant of the XML document
  ? oXml.DocumentElement.Basename 

  *** The following gives the number of nodes (or records)           
  ? oXML.documentelement.childnodes.LENGTH  

  *** REMEMBER that the object model is in base zero.
  *** Therefore use the following in looping expressions  
  ? oXML.documentelement.childnodes.LENGTH - 1

  *** The following returns the number of child nodes contained under the first Item
  *** This is useful for looping through a childes elements
  *** FOR ichild = 0 TO oXML.documentelement.childnodes.ITEM(0).childnodes.LENGTH - 1
  ? oXML.documentelement.childnodes.ITEM(0).childnodes.LENGTH - 1

  *** The following returns the nodename of the childnode  
  ? oxml.documentelement.childnodes.item(0).childnodes(0).nodename

  *** The following returns the data contained in the childnode
  ? oXML.documentelement.childnodes.ITEM(0).childnodes(0).TEXT

  *** Returns a string of all the data contained in the second child / record
  ? oXml.documentelement.childnodes.item(1).nodetypedvalue

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>

REFERENCES
==========

For additional information on XML, click the article number below to view the
article in the Microsoft Knowledge Base:

  Q191758 Convert FoxPro Cursor into XML Data Format

  Q253713 Move Data From an XML Document into a FoxPro Table

For more information about XML, see the following Web sites:

  http://www.w3.org

  http://www.xml.com

Additional query words: kbsweptMDAC260 GRANTS Jul-19-2000

======================================================================
Keywords          : kbMiscTools kbvfp600 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

=============================================================================

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1986-2002.