从XML文档(Redux)读取多个记录

2020-09-23 12:25发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)一年多以前,我问了这个问题: ...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


一年多以前,我问了这个问题:

https://archive.sap.com/discussions/thread/3818944

从本质上讲,如何将一个包含多个标签的XML文档读入(或拼合)到一个或多个输入流中? 我意识到适配器到流机制不允许一个适配器将输入发送到多个流,因此我对如何使用基于XML的适配器感到困惑。 文档中没有太多信息,没有可用的示例代码。

例如,一个XML文档如下所示:

 <?xml版本=" 1.0"编码=" utf-8"?> 
<协议> <端口/> 0123
HEAD123


1234
HEAD456





还有更多标签
如何定义一个ESP模式来接收所有数据? 我已经与发送此数据的人员进行了交谈,他们已经同意包括可能出现的每个标签,即使它们没有数据也是如此(如上所示)。 某些子标签名称在名称不同的父标签中使用时会重复(例如,上面的长度和标头)。

在上面提到的问题中,我正在使用XML文件适配器,建议是针对不同的模式多次读取同一文件。 那确实不是一个可行的解决方案。 对于这个项目,我将通过套接字适配器接收此数据,并且该数据将仅发送一次,因此我必须一次性获得所有数据。

请帮助!

谢谢

8条回答
灬番茄
2020-09-23 12:58

听起来并不是任何预先配置的适配器都能满足您的需要,但是您在这里有几种选择...

< p>让我们从重复元素的挑战开始。 这不仅仅是一个适配器问题,而是一个CCL模式问题。 如您所知,CCL对于每个输入流/窗口都需要一个固定的模式-即固定的列数。 因此,在每个"事件"中的列数都会变化的情况下,您有几种选择:

1。 用任何事件可以拥有的最大列数定义输入流。 您可以输入没有所有列的事件-缺少的列将只是" NULL"
2.定义多个输入流,每个输入流具有不同的架构,然后将事件"路由"到适当的输入流

3。 使用定界符将多个值打包在单个CCL字符串列中,然后在CCL中,您可以根据需要解析该字符串

现在到适配器了:大多数预构建适配器都基于适配器 框架。 适配器框架使您可以将传输模块,解析模块和ESP/SDS连接器模块以不同的组合进行组合,以实现所需的结果。 SDS和ESP附带了一组模块和一组预配置的适配器。 但是,您可以定义许多其他适配器而无需编写新的自定义模块,而只需将现有模块组合成不同的组合即可。

请参阅构建自定义适配器的指南。 感兴趣的模块 frameset.htm¤t_toc=/en/70/0dced65a83492d80e58a1a3930d2f3/plain.htm&node_id = 52"> XMLDoc解析器-可让您解析XML文档并将XML元素映射到CCL行/列

- ESPMultiStreamPublisher ,它允许单个适配器使用过滤器发布多个流,从而确定使用哪个过滤器 事件进入哪个输入流

最后,使用现有模块可能无法实现您想要的功能,在这种情况下,您可以考虑编写自定义解析模块。

对于适配器,适配器模块可能难以破解(尤其是在这些更复杂的模块周围),但是下载包中包含一些示例(位置因包而异- 听起来就像您在使用ESP。 在ESP安装目录中四处摸索,但应该在某个地方找到一个名为adapters的文件夹,如果进行深入研究,您将找到示例)

一周热门 更多>