正在将 XML 文件读取到 Temp-table Progress-4gl
Reading XML file to Temp-table in Progress-4gl
我正在使用 OpenEdge 10.2A。
我的XML文件只有一个TABLE_NAME记录,它有很多字段,但简化版是:
<Table_Name>
<Field_Name_1>Value_1</Field_Name_1>
<Field_Name_2>Value_2</Field_Name_2>
</Table_Name>
为了阅读它,我使用代码:
DEFINE TEMP-TABLE Table_Name NO-UNDO
FIELD Field_Name_1 AS CHAR
FIELD Field_Name_2 AS CHAR
.
TEMP-TABLE Table_Name:READ-XML("File","C:\myFile.xml","empty",?,?,?,?).
DEF VAR i AS INT NO-UNDO.
FOR EACH Table_Name:
i=i + 1.
END.
DISP i.
它显示 0(零)作为结果,这意味着它不读取文件中的 XML 条记录。
如果我按如下方式更改 XML 文件:
<My_XML_Records>
<Table_Name>
<Field_Name_1>Value_1</Field_Name_1>
<Field_Name_2>Value_2</Field_Name_2>
</Table_Name>
</My_XML_Records>
同样的代码显示1(个)
由于XML文件是由其他程序生成的,格式是固定的,有没有办法让代码正确读取XML文件?
这似乎是一个已知错误,我找到了它的知识库条目:
https://knowledgebase.progress.com/articles/Article/How-to-read-an-XML-in-a-temp-table-using-READ-XML
解决方法:在您的 XML 中,您将需要一个具有数据集名称的外部节点。像这样:
<dataset_name>
<Table_Name>
<Field_Name_1>Value_1</Field_Name_1>
<Field_Name_2>Value_2</Field_Name_2>
</Table_Name>
</dataset_name>
然后为您的温度定义一个数据集-table。所以这是代码:
DEFINE TEMP-TABLE Table_Name
FIELD Field_Name_1 AS CHAR
FIELD Field_Name_2 AS CHAR
.
define dataset dataset_name for table_name.
dataset dataset_name:read-xml("File","C:\myFile.xml","empty",?,?,?).
DEF VAR i AS INT NO-UNDO.
FOR EACH Table_Name:
i=i + 1.
DISP Field_Name_1 format "x(20)"
Field_Name_2 format "x(20)".
END.
DISP i.
我用它加载了数据集。
我正在使用 OpenEdge 10.2A。
我的XML文件只有一个TABLE_NAME记录,它有很多字段,但简化版是:
<Table_Name>
<Field_Name_1>Value_1</Field_Name_1>
<Field_Name_2>Value_2</Field_Name_2>
</Table_Name>
为了阅读它,我使用代码:
DEFINE TEMP-TABLE Table_Name NO-UNDO
FIELD Field_Name_1 AS CHAR
FIELD Field_Name_2 AS CHAR
.
TEMP-TABLE Table_Name:READ-XML("File","C:\myFile.xml","empty",?,?,?,?).
DEF VAR i AS INT NO-UNDO.
FOR EACH Table_Name:
i=i + 1.
END.
DISP i.
它显示 0(零)作为结果,这意味着它不读取文件中的 XML 条记录。
如果我按如下方式更改 XML 文件:
<My_XML_Records>
<Table_Name>
<Field_Name_1>Value_1</Field_Name_1>
<Field_Name_2>Value_2</Field_Name_2>
</Table_Name>
</My_XML_Records>
同样的代码显示1(个)
由于XML文件是由其他程序生成的,格式是固定的,有没有办法让代码正确读取XML文件?
这似乎是一个已知错误,我找到了它的知识库条目: https://knowledgebase.progress.com/articles/Article/How-to-read-an-XML-in-a-temp-table-using-READ-XML
解决方法:在您的 XML 中,您将需要一个具有数据集名称的外部节点。像这样:
<dataset_name>
<Table_Name>
<Field_Name_1>Value_1</Field_Name_1>
<Field_Name_2>Value_2</Field_Name_2>
</Table_Name>
</dataset_name>
然后为您的温度定义一个数据集-table。所以这是代码:
DEFINE TEMP-TABLE Table_Name
FIELD Field_Name_1 AS CHAR
FIELD Field_Name_2 AS CHAR
.
define dataset dataset_name for table_name.
dataset dataset_name:read-xml("File","C:\myFile.xml","empty",?,?,?).
DEF VAR i AS INT NO-UNDO.
FOR EACH Table_Name:
i=i + 1.
DISP Field_Name_1 format "x(20)"
Field_Name_2 format "x(20)".
END.
DISP i.
我用它加载了数据集。