-1

获取序列化错误

IIB 9 和 Websphere MQ

我有一个示例消息流。使用 MQInput 节点、Compute 节点、Mqoutput 节点并使用 DFDL。

我有一个带有一个强制段的 dfdl,其他 3 个是非强制段。

在非强制段中,我有这种类型的树结构。

根 段 1 元素 1 元素 2 元素 3 元素 4 元素 5 段 2 元素 1 元素 2 元素 3 元素 4 段 2 元素 1 元素 2 元素 3 元素 4

考虑第二个 SEGMENT2 >> ELEMENT2 未填充。如果我想使用 ESQL 在 ESQL 中添加 ELEMENT2,我会收到序列化错误。


案例:我可以通过将字段创建为 ELEMENT1 的 NEXSIBLING 来为 ELEMENT2 赋值。

CREATE NEXTSIBLING OF REF_SEGMENT TYPE Name NAMESPACE NS NAME 'NAME OF THE FIELD';

在这里,我正在创建 ELEMENT1 的下一个兄弟,因此我可以创建 ELEMENT2 以便我可以将值分配给 ELEMENT 2 。但是当 ELEMENT 1 和 ELEMENT 3 为空时我面临的问题

我无法将 ELEMENT2 创建为 NEXTSIBLING 或 PREVIOUSSIBLING。

我们有 CREATE FIELD 功能,但它在逻辑树结构的末尾添加元素。所以尝试也失败了。

CREATE FIELD OutputRoot.XMLNS.TestCase.description TYPE NameValue VALUE 'This is my TestCase';

注意:没有更改 DFDL 的选项,我们对其他接口使用相同的 dfdl。唯一的方法是 ESQL。

4

1 回答 1

0

我假设 ELEMENT1 和 ELEMENT2 是具有这些名称的 2 个不同字段。在这种情况下,即使没有先创建 ELEMENT1,您也应该能够执行以下任一操作来创建 ELEMENT2:

  • SET OutputRoot.DFDL.ROOT.SEGMENT2[2].ELEMENT2 = 'test';
  • 创建 OutputRoot.DFDL.ROOT.SEGMENT2[2] 的 LASTCHILD NAME 'ELEMENT2' VALUE 'test';

SEGMENT1 和第一个 SEGMENT2 (OutputRoot.DFDL.ROOT.SEGMENT2[1]) 必须在之前创建。

于 2015-06-22T21:19:00.603 回答