DEFINE VARIABLE p_hs AS HANDLE NO-UNDO.
DEFINE VARIABLE p_cxpath AS CHARACTER NO-UNDO.
DEFINE VARIABLE p_icolumn AS INTEGER NO-UNDO.
DEFINE TEMP-TABLE ttproperty NO-UNDO
FIELD cname AS CHAR FORMAT "x(16)"
FIELD cvalue AS CHAR FORMAT "x(16)"
.
CREATE SAX-READER p_hs.
p_hs:SET-INPUT-SOURCE( "file", "c:/temp/table.html" ).
p_hs:SAX-PARSE().
RUN showtt.
PROCEDURE startElement:
DEFINE INPUT PARAMETER i_cnamespaceuri AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER i_clocalname AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER i_cqname AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER i_hattributes AS HANDLE NO-UNDO.
p_cxpath = p_cxpath + "/" + i_clocalname.
CASE p_cxpath:
WHEN "/table/tr" THEN DO:
CREATE ttproperty.
p_icolumn = 0.
END.
WHEN "/table/tr/td" THEN DO:
p_icolumn = p_icolumn + 1.
END.
END CASE.
END PROCEDURE.
PROCEDURE endElement:
DEFINE INPUT PARAMETER i_cnamespaceuri AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER i_clocalname AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER i_cqname AS CHARACTER NO-UNDO.
IF p_cxpath = "/table/tr" THEN
RELEASE ttproperty.
p_cxpath = SUBSTRING( p_cxpath, 1, R-INDEX( p_cxpath, "/":U ) - 1 ).
END PROCEDURE.
PROCEDURE characters:
DEFINE INPUT PARAMETER i_carray AS LONGCHAR NO-UNDO.
DEFINE INPUT PARAMETER i_iarraylength AS INTEGER NO-UNDO.
CASE p_cxpath:
WHEN "/table/tr/td" THEN DO:
CASE p_icolumn:
WHEN 1 THEN ttproperty.cname = i_carray.
WHEN 2 THEN ttproperty.cvalue = i_carray.
END CASE.
END.
END CASE.
END PROCEDURE.
PROCEDURE showtt:
FOR EACH ttproperty:
DISPLAY
ttproperty.
END.
END PROCEDURE.