><?xml version="1.0"?> ><!--File Name: CT_AP001.XML --> ><CTAPI001A> > <CT_AP001_HDR> > <BUSINESS_UNIT>OTTIU</BUSINESS_UNIT> > <VOUCHER_ID>1</VOUCHER_ID> > <CT_VCHR_INTFC_SRCE>OTT</CT_VCHR_INTFC_SRCE> > <ORIGIN>OTT</ORIGIN> > <INVOICE_ID>OTT2189</INVOICE_ID> > <INVOICE_DT>04/04/2003</INVOICE_DT> > <ACCOUNTING_DT>04/04/2003</ACCOUNTING_DT> > <VENDOR_SETID>OTTIU</VENDOR_SETID> > <NAME1>PELER, Jiody</NAME1> > <NAME2>EXEC</NAME2> > <VNDR_NAME_SHRT_USR>045991234</VNDR_NAME_SHRT_USR> > <CT_RECEIPT_DT>12/04/2003</CT_RECEIPT_DT> > <COUNTRY>USA</COUNTRY> > <ADDRESS1>36 MIDDLE AVE</ADDRESS1> > <CITY>MyTown</CITY> > <STATE>CT</STATE> > <POSTAL>06109</POSTAL> > <OPRID>MaidelisI</OPRID> > <GROSS_AMT>524.44</GROSS_AMT> > <CT_AP001_PMNT> > <BUSINESS_UNIT>OTTIU</BUSINESS_UNIT> > <VOUCHER_ID>1</VOUCHER_ID> > <MESSAGE_CD>UNCLAI</MESSAGE_CD> > <PYMNT_GROSS_AMT>524.44</PYMNT_GROSS_AMT> > <PYMNT_HANDLING_CD>RE</PYMNT_HANDLING_CD> > </CT_AP001_PMNT> > <CT_AP001_LINE> > <BUSINESS_UNIT>OTTIU</BUSINESS_UNIT> > <VOUCHER_ID>1</VOUCHER_ID> > <VOUCHER_LINE_NUM>1</VOUCHER_LINE_NUM> > <LINE_DESCR>PAYMENT IN FULL</LINE_DESCR> > <MERCHANDISE_AMT>524.44</MERCHANDISE_AMT> > <CT_AP001_DIST> > <BUSINESS_UNIT>OTTIU</BUSINESS_UNIT> > <VOUCHER_ID>1</VOUCHER_ID> > <VOUCHER_LINE_NUM>1</VOUCHER_LINE_NUM> > <DISTRIB_LINE_NUM>1</DISTRIB_LINE_NUM> > <MERCHANDISE_AMT>524.44</MERCHANDISE_AMT> > <BUSINESS_UNIT_GL>STATE</BUSINESS_UNIT_GL> > <ACCOUNT>54830</ACCOUNT> > <FUND_CODE>11000</FUND_CODE> > <CLASS_FLD>12002</CLASS_FLD> > <PROGRAM_CODE>13019</PROGRAM_CODE> > <PROJECT_ID>OTT_NONPROJECT</PROJECT_ID> > <DEPTID>OTT14620</DEPTID> > <BUDGET_DT>04/04/2004</BUDGET_DT> > <BUDGET_REF>2004</BUDGET_REF> > </CT_AP001_DIST> > </CT_AP001_LINE> > </CT_AP001_HDR> > </CTAPI001A> > >>
CLOSE DATABASES all CLEAR SET MEMOWIDTH TO 150 TEXT TO cXML NOSHOW <?xml version="1.0"?> <!--File Name: CT_AP001.XML --> <CTAPI001A> <CT_AP001_HDR> <BUSINESS_UNIT>OTTIU</BUSINESS_UNIT> <OPRID>MaidelisI</OPRID> <GROSS_AMT>524.44</GROSS_AMT> <CT_AP001_LINE> <BUSINESS_UNIT>OTTIU</BUSINESS_UNIT> <VOUCHER_LINE_NUM>1</VOUCHER_LINE_NUM> <LINE_DESCR>PAYMENT IN FULL</LINE_DESCR> <MERCHANDISE_AMT>524.44</MERCHANDISE_AMT> <CT_AP001_DIST> <BUSINESS_UNIT>OTTIU</BUSINESS_UNIT> <VOUCHER_LINE_NUM>1</VOUCHER_LINE_NUM> <DISTRIB_LINE_NUM>1</DISTRIB_LINE_NUM> <MERCHANDISE_AMT>524.44</MERCHANDISE_AMT> <BUDGET_DT>2004-04-04</BUDGET_DT> <BUDGET_REF>2004</BUDGET_REF> </CT_AP001_DIST> </CT_AP001_LINE> </CT_AP001_HDR> </CTAPI001A> ENDTEXT *?cXML LOCAL oXA as XMLAdapter, oXT as XMLTable, oXF as XMLField ?" Ex 1 - populate Tables collection manually." oXA=CREATEOBJECT("XMLAdapter") oXA.LoadXML(cXML,.F.) oXT=CreateTable(oXA,"CT_AP001_HDR") CreateField(oXT,"BUSINESS_UNIT","C",5,-1,.F.) CreateField(oXT,"OPRID","C",10,-1,.F.) CreateField(oXT,"GROSS_AMT","B",-1,2,.F.) oXT=CreateTable(oXA,"CT_AP001_LINE") CreateField(oXT,"BUSINESS_UNIT","C",5,-1,.F.) CreateField(oXT,"VOUCHER_LINE_NUM","I",-1,-1,.F.) CreateField(oXT,"LINE_DESCR","C",20,-1,.F.) CreateField(oXT,"MERCHANDISE_AMT","B",-1,2,.F.) oXT=CreateTable(oXA,"CT_AP001_DIST") CreateField(oXT,"BUSINESS_UNIT","C",5,-1,.F.) CreateField(oXT,"VOUCHER_LINE_NUM","I",-1,-1,.F.) CreateField(oXT,"DISTRIB_LINE_NUM","I",-1,-1,.F.) CreateField(oXT,"MERCHANDISE_AMT","B",-1,2,.F.) CreateField(oXT,"BUDGET_DT","D",-1,-1,.F.) CreateField(oXT,"BUDGET_REF","I",-1,-1,.F.) GetData(oXA) oXA=null CLOSE DATABASES ALL ?" Ex 2 - Use XML schema." TEXT TO cXMLShema NOSHOW <?xml version = "1.0" encoding="Windows-1252" standalone="yes"?> <xsd:schema id="CTAPI001A" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:element name="CTAPI001A" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="CT_AP001_HDR" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="BUSINESS_UNIT"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="5"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="OPRID"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="10"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="GROSS_AMT" type="xsd:double"/> <xsd:element name="CT_AP001_LINE" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="BUSINESS_UNIT"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="5"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="VOUCHER_LINE_NUM" type="xsd:int"/> <xsd:element name="LINE_DESCR"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="20"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="MERCHANDISE_AMT" type="xsd:double"/> <xsd:element name="CT_AP001_DIST" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="BUSINESS_UNIT"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="5"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="VOUCHER_LINE_NUM" type="xsd:int"/> <xsd:element name="DISTRIB_LINE_NUM" type="xsd:int"/> <xsd:element name="MERCHANDISE_AMT" type="xsd:double"/> <xsd:element name="BUDGET_DT" type="xsd:date"/> <xsd:element name="BUDGET_REF" type="xsd:int"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> ENDTEXT DELETE FILE MySchema.xsd STRTOFILE(cXMLShema,"MySchema.xsd") oXA=CREATEOBJECT("XMLAdapter") oXA.XMLSchemaLocation="MySchema.xsd" oXA.LoadXML(cXML,.F.) GetData(oXA) FUNCTION GetData(oXA) FOR EACH oXT IN oXA.Tables oXT.ToCursor() SELECT (oXT.Alias) LIST ? ENDFOR ENDFUNC FUNCTION CreateTable(oXA,cName) LOCAL oXT as XMLTable oXT=CREATEOBJECT("XMLTable") oXT.Alias=cNAme oXT.XMLName=STRCONV(cName,5) oXA.Tables.Add(oXT,oXT.XMLName) RETURN oXT ENDFUNC FUNCTION CreateField(oXT,cName,cType,nMaxLength,nFractionDigits,lAttribute) LOCAL oXF as XMLField oXF=CREATEOBJECT("XMLField") oXF.Alias=cNAme oXF.XMLName=STRCONV(cName,5) oXF.DataType=cType oXF.MaxLength=nMaxLength oXF.FractionDigits=nFractionDigits oXF.IsAttribute=lAttribute oXT.Fields.Add(oXF,oXF.XMLName) RETURN oXF ENDFUNCThanks,