将XML数据放入进行中的Temp-Table 4GL / OpenEdge ABL中

问题描述 投票:0回答:1

所以这应该非常简单。我试图从URL中的XML文件中获取数据并将其解析为临时表,以便可以在程序的其余部分中使用这些数据。我已经编写了代码,但是最后,DISPLAY PAPEL DESCRICAO.没有显示任何内容。难道我做错了什么?带有XML链接的整个代码:

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.

非常感谢您的帮助。

openedge progress-4gl
1个回答
2
投票

超级关闭。 CMA不对应于表,而是对应于在这种情况下可以由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.
© www.soinside.com 2019 - 2024. All rights reserved.