/* e-incus.p - Import the Customer table from an xml file*/
DEFINE VARIABLE hDoc AS HANDLE.
DEFINE VARIABLE hRoot AS HANDLE.
DEFINE VARIABLE hTable AS HANDLE.
DEFINE VARIABLE hField AS HANDLE.
DEFINE VARIABLE hText AS HANDLE.
DEFINE VARIABLE hBuf AS HANDLE.
DEFINE VARIABLE hDBFld AS HANDLE.
DEFINE VARIABLE i AS INTEGER.
DEFINE VARIABLE j AS INTEGER.
/*so we can create new recs*/
DEFINE TEMP-TABLE CODEMSTR LIKE CODE_mstr.
CREATE X-DOCUMENT hDoc.
CREATE X-NODEREF hRoot.
CREATE X-NODEREF hTable.
CREATE X-NODEREF hField.
CREATE X-NODEREF hText.
hBuf = BUFFER Codemstr:HANDLE.
/*read in the file created in the last example*/
hDoc:LOAD("file", "d:\code.xml", FALSE).
hDoc:GET-DOCUMENT-ELEMENT(hRoot).
/*read each CodeMstr from the root*/
REPEAT i = 1 TO hRoot:NUM-CHILDREN:
hRoot:GET-CHILD(hTable,i).
CREATE Codemstr.
/*get the fields given as attributes*/
CODE_fldname = hTable:GET-ATTRIBUTE("CODE_FLDNAME").
/*get the remaining fields given as elements with text*/
REPEAT j = 1 TO hTable:NUM-CHILDREN:
hTable:GET-CHILD(hField,j).
IF hField:NUM-CHILDREN < 1 THEN NEXT.
/*skip any null value*/
hDBFld = hBuf:BUFFER-FIELD(hField:NAME).
hField:GET-CHILD(hText,1).
/*get the text value of the field*/
hDBFld:BUFFER-VALUE = hTEXT:NODE-VALUE.
END.
END.
DELETE OBJECT hDoc.
DELETE OBJECT hRoot.
DELETE OBJECT hTable.
DELETE OBJECT hField.
DELETE OBJECT hText.
/* show data made it by displaying temp-table */
FOR EACH codemstr:
DISPLAY codemstr.
END.