我正在使用ABL创建XML文件。我希望详细信息节点低于field3,如下所示:
+<root>
+<header>
<field1>some data</field1>
<field2>some data</field2>
<field3>some data</field3>
+<detail>
<field4>some data</field4>
</detail>
</header>
</root>
但是,这是保存XML文件时发生的情况。细节直接落在标题节点下。
+<root>
+<header>
+<detail>
<field4>some data</field4>
</detail>
<field1>some data</field1>
<field2>some data</field2>
<field3>some data</field3>
</header>
</root>
我是否可以使用某种方法或以特定的方式订购/构建我的代码来实现这一目标?
以下是节点创建的代码:
hDoc:CREATE-NODE(hRoot,"root","ELEMENT").
hDoc:APPEND-CHILD(hRoot).
hDoc:CREATE-NODE(hHeader,"header","ELEMENT").
hRoot:APPEND-CHILD(hHeader).
hDoc:CREATE-NODE(hDetail,"detail","ELEMENT").
hHeader:APPEND-CHILD(hDetail).
我在字段1-3之后添加了详细信息节点的值。
任何帮助都将不胜感激。
感谢。
答案 0 :(得分:1)
如果我理解你的问题,这似乎就是你所描述的:
define variable hDoc as handle no-undo.
define variable hRoot as handle no-undo.
define variable hHeader as handle no-undo.
define variable hDetail as handle no-undo.
define variable hField as handle no-undo.
create x-document hDoc.
create x-noderef hRoot.
create x-noderef hHeader.
create x-noderef hDetail.
create x-noderef hField.
hDoc:CREATE-NODE(hRoot,"root","ELEMENT").
hDoc:APPEND-CHILD(hRoot).
hDoc:CREATE-NODE(hHeader,"header","ELEMENT").
hRoot:APPEND-CHILD(hHeader).
hDoc:CREATE-NODE(hField,"field1","ELEMENT").
hHeader:APPEND-CHILD(hField).
hDoc:CREATE-NODE(hField,"field2","ELEMENT").
hHeader:APPEND-CHILD(hField).
hDoc:CREATE-NODE(hField,"field3","ELEMENT").
hHeader:APPEND-CHILD(hField).
hDoc:CREATE-NODE(hDetail,"detail","ELEMENT").
hHeader:APPEND-CHILD(hDetail).
hDoc:CREATE-NODE(hField,"field4","ELEMENT").
hDetail:APPEND-CHILD(hField).
hDoc:save("file","test.xml").
从您不受欢迎的输出示例中,我猜您正在附加&#34;详细信息&#34;首先是元素到标题。如果你想在field3之后使用它,你需要在追加field3之后追加它。或者你可以使用INSERT-BEFORE()方法而不是APPEND(),如果你要么踩着小部件树&#34;到适当的点或保持适当的指针。