使用 DEFINE DATASET 在子表之间生成包含父字段的 XML 文件
Generating XML file with parent fields between child tables using DEFINE DATASET
我正在尝试使用 DEFINE DATASET 生成具有以下格式的 XML 文件:
<Parent>
<Child1>
<Child1 field>
</Child1>
<Parent field>
<Child2>
<Child2 field>
</Child2>
</Parent>
我尝试将 PARENT-FIELDS-AFTER 语句与 PARENT > Child1 一起使用,但 Parent 字段在 Child2 之后出现 table。正确的语法是什么?
您要查找的是数据集中 PARENT-ID-RELATION
的 PARENT-FIELDS-AFTER
和 PARENT-FIELDS-BEFORE
属性。
如果您有更复杂的 temp-tables,您可能需要在定义中处理更多字段。但这是一个基本的工作示例。
DEFINE TEMP-TABLE ttParent NO-UNDO SERIALIZE-NAME "Parent"
FIELD parentField AS CHARACTER.
DEFINE TEMP-TABLE ttChild1 NO-UNDO SERIALIZE-NAME "Child1"
FIELD id AS RECID SERIALIZE-HIDDEN
FIELD childField AS CHARACTER .
DEFINE TEMP-TABLE ttChild2 NO-UNDO SERIALIZE-NAME "Child2"
FIELD id AS RECID SERIALIZE-HIDDEN
FIELD childField AS CHARACTER .
DEFINE DATASET dsDataset SERIALIZE-HIDDEN FOR ttParent, ttChild1, ttChild2
PARENT-ID-RELATION pir1 FOR ttPArent, ttChild1 PARENT-ID-FIELD ttChild1.id
PARENT-FIELDS-AFTER(ttParent.parentField)
PARENT-ID-RELATION pir2 FOR ttPArent, ttChild2 PARENT-ID-FIELD ttChild2.id.
CREATE ttParent.
ASSIGN ttParent.parentField = "AAA".
CREATE ttChild1.
ASSIGN ttChild1.id = RECID(ttParent)
ttChild1.childField = "BBB".
CREATE ttChild2.
ASSIGN ttChild2.id = RECID(ttParent)
ttChild2.childField = "CCC".
DATASET dsDataset:WRITE-XML("file", "c:/temp/file.xml", TRUE, ?,?,?,?,?,TRUE)
File.xml:
<Parent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Child1>
<childField>BBB</childField>
</Child1>
<parentField>AAA</parentField>
<Child2>
<childField>CCC</childField>
</Child2>
</Parent>
我正在尝试使用 DEFINE DATASET 生成具有以下格式的 XML 文件:
<Parent>
<Child1>
<Child1 field>
</Child1>
<Parent field>
<Child2>
<Child2 field>
</Child2>
</Parent>
我尝试将 PARENT-FIELDS-AFTER 语句与 PARENT > Child1 一起使用,但 Parent 字段在 Child2 之后出现 table。正确的语法是什么?
您要查找的是数据集中 PARENT-ID-RELATION
的 PARENT-FIELDS-AFTER
和 PARENT-FIELDS-BEFORE
属性。
如果您有更复杂的 temp-tables,您可能需要在定义中处理更多字段。但这是一个基本的工作示例。
DEFINE TEMP-TABLE ttParent NO-UNDO SERIALIZE-NAME "Parent"
FIELD parentField AS CHARACTER.
DEFINE TEMP-TABLE ttChild1 NO-UNDO SERIALIZE-NAME "Child1"
FIELD id AS RECID SERIALIZE-HIDDEN
FIELD childField AS CHARACTER .
DEFINE TEMP-TABLE ttChild2 NO-UNDO SERIALIZE-NAME "Child2"
FIELD id AS RECID SERIALIZE-HIDDEN
FIELD childField AS CHARACTER .
DEFINE DATASET dsDataset SERIALIZE-HIDDEN FOR ttParent, ttChild1, ttChild2
PARENT-ID-RELATION pir1 FOR ttPArent, ttChild1 PARENT-ID-FIELD ttChild1.id
PARENT-FIELDS-AFTER(ttParent.parentField)
PARENT-ID-RELATION pir2 FOR ttPArent, ttChild2 PARENT-ID-FIELD ttChild2.id.
CREATE ttParent.
ASSIGN ttParent.parentField = "AAA".
CREATE ttChild1.
ASSIGN ttChild1.id = RECID(ttParent)
ttChild1.childField = "BBB".
CREATE ttChild2.
ASSIGN ttChild2.id = RECID(ttParent)
ttChild2.childField = "CCC".
DATASET dsDataset:WRITE-XML("file", "c:/temp/file.xml", TRUE, ?,?,?,?,?,TRUE)
File.xml:
<Parent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Child1>
<childField>BBB</childField>
</Child1>
<parentField>AAA</parentField>
<Child2>
<childField>CCC</childField>
</Child2>
</Parent>