我有一个带有嵌套重复节点的平面文件,需要将其分解为单个记录。
平版文件:
ABC DEF 1234.456789012345678
000000123456L01 Supplier 0
001000123456L01 00301Address 1
000001234567L01 Supplier 1
001001234567L01 00301Address 2
001001234567L01 00301Address 3
001001234567L01 00302Address 4从1000开始的线路是供应商,从001开始是供应商地址。字符4-15是供应商代码.
目前,我无法超越输出一个记录与每个供应商的所有地址:
<Record>
<Supplier>
<Supplier_code>001234567L01</Supplier_code>
<Supplier_name>Supplier 1</Supplier_name>
</Supplier>
<Address>
<Supplier_address>Address_2</Supplier_address>
<Supplier_address>Address_3</Supplier_address>
<Supplier_address>Address_4</Supplier_address>
</Address>
</Record>然而,预期的产出是每个供应商地址一个记录:
<Record>
<Supplier>
<Supplier_code>001234567L01</Supplier_code>
<Supplier_name>Supplier 1</Supplier_name>
</Supplier>
<Address>
<Supplier_address>Address_2</Supplier_address>
</Address>
</Record>
<Record>
<Supplier>
<Supplier_code>001234567L01</Supplier_code>
<Supplier_name>Supplier 1</Supplier_name>
</Supplier>
<Address>
<Supplier_address>Address_3</Supplier_address>
</Address>
</Record>
<Record>
<Supplier>
<Supplier_code>001234567L01</Supplier_code>
<Supplier_name>Supplier 1</Supplier_name>
</Supplier>
<Address>
<Supplier_address>Address_4</Supplier_address>
</Address>
</Record>我需要如何修改我的FlatFile模式来完成上面的工作呢?
发布于 2016-03-23 14:22:28
使用平面文件反汇编程序不能在一次传递中做到这一点。没有办法向它表明某些节点需要分组/拆分/等等。不过,在地图中这样做是相当简单的。创建一个结构类似于第一个的新架构,但是有一个额外的根节点来允许Record重复,您的映射将如下所示:

只需确保在MaxOccurs元素和目标Record节点上正确设置了Supplier_address (可能是unbounded)。将此映射添加到您的接收端口,它将按需要进入MessageBox拆分。请注意,您确实需要一个新的架构,因为您不能有一个包含多个根节点的消息。如果需要进一步消除这种情况,可以将其设置为一个信封模式,让请求响应端口订阅它,并在响应端使用XML反汇编程序对其进行分解。您唯一的其他选择是在平面文件dasm完成其神奇功能之后,在自定义管道组件中执行此操作。
https://stackoverflow.com/questions/36178715
复制相似问题