正在将 XML 数据导入 Temp-Table 4GL/OpenEdge ABL

Getting XML data into Temp-Table in Progress 4GL/OpenEdge ABL

所以这应该很简单。我正在尝试从 URL 中的 XML 文件获取数据并将其解析为 temp-table 以便我可以在程序的其余部分中使用这些数据。我写了一段代码,但最后 DISPLAY PAPEL DESCRICAO. 没有显示任何内容。难道我做错了什么? 整个代码用 XML link:

DEF TEMP-TABLE CMA NO-UNDO
    FIELD PAPEL       AS CHAR
    FIELD DESCRICAO   AS CHAR
    FIELD ULTIMO      AS  DEC
    FIELD DIFERENCIAL AS  DEC
    FIELD VARIACAO    AS  DEC
    FIELD FECHANT     AS  DEC
    FIELD COMPRA      AS  DEC
    FIELD MINIMA      AS  DEC
    FIELD MAXIMA      AS  DEC
    FIELD VENCIMENTO  AS  INT
    FIELD HORA        AS CHAR
    FIELD DATA        AS DATE.

DEF VAR cSourceType             AS CHAR    NO-UNDO.
DEF VAR cFile                   AS CHAR    NO-UNDO.
DEF VAR cReadMode               AS CHAR    NO-UNDO.
DEF VAR cSchemaLocation         AS CHAR    NO-UNDO.
DEF VAR lOverrideDefaultMapping AS LOGICAL NO-UNDO.
DEF VAR cFieldTypeMapping       AS CHAR    NO-UNDO.
DEF VAR cVerifySchemaMode       AS CHAR    NO-UNDO.
DEF VAR lReturn                 AS LOGICAL NO-UNDO.

ASSIGN
    cSourceType             = "FILE"
    cFile                   = "http://sfeed-cot01.cma.com.br/clientes/cocamar/cbot.xml"
    cReadMode               = "EMPTY"
    cSchemaLocation         = ?
    lOverrideDefaultMapping = ?
    cFieldTypeMapping       = ?
    cVerifySchemaMode       = ?. 

lReturn = TEMP-TABLE CMA:READ-XML(cSourceType, cFile, cReadMode, 
    cSchemaLocation, lOverrideDefaultMapping, cFieldTypeMapping,
    cVerifySchemaMode).
IF lReturn THEN
FOR EACH CMA NO-LOCK:
    DISPLAY CMA.PAPEL CMA.DESCRICAO.
END.

非常感谢任何帮助。

超级近。 CMA 不对应于 table,而是对应于在这种情况下可以由 Prodataset 表示的容器标签。而只是使用 "QUOTES".

我不会在生产中像这样使用 xml,如果源关闭等,您可能无法进行任何干预。我会以另一种方式拉下 xml,然后加载它.

但那是另外一回事了...

DEF TEMP-TABLE QUOTES NO-UNDO
    FIELD PAPEL       AS CHAR
    FIELD DESCRICAO   AS CHAR
    FIELD ULTIMO      AS  DEC
    FIELD DIFERENCIAL AS  DEC
    FIELD VARIACAO    AS  DEC
    FIELD FECHANT     AS  DEC
    FIELD COMPRA      AS  DEC
    FIELD MINIMA      AS  DEC
    FIELD MAXIMA      AS  DEC
    FIELD VENCIMENTO  AS  INT
    FIELD HORA        AS CHAR
    FIELD DATA        AS DATE.

DEF VAR cSourceType             AS CHAR    NO-UNDO.
DEF VAR cFile                   AS CHAR    NO-UNDO.
DEF VAR cReadMode               AS CHAR    NO-UNDO.
DEF VAR cSchemaLocation         AS CHAR    NO-UNDO.
DEF VAR lOverrideDefaultMapping AS LOGICAL NO-UNDO.
DEF VAR cFieldTypeMapping       AS CHAR    NO-UNDO.
DEF VAR cVerifySchemaMode       AS CHAR    NO-UNDO.
DEF VAR lReturn                 AS LOGICAL NO-UNDO.

ASSIGN
    cSourceType             = "FILE"
    cFile                   = "http://sfeed-cot01.cma.com.br/clientes/cocamar/cbot.xml"
    cReadMode               = "EMPTY"
    cSchemaLocation         = ?
    lOverrideDefaultMapping = ?
    cFieldTypeMapping       = ?
    cVerifySchemaMode       = ?. 

lReturn = TEMP-TABLE QUOTES:READ-XML(cSourceType, cFile, cReadMode, 
    cSchemaLocation, lOverrideDefaultMapping, cFieldTypeMapping,
    cVerifySchemaMode).

DISP lReturn.
IF lReturn THEN
FOR EACH QUOTES NO-LOCK:
    DISPLAY QUOTES.PAPEL QUOTES.DESCRICAO.
END.