2017年7月,我们推出了新的通用和迭代拆分器版本1.2。此版本考虑没有(!)的名称空间有效负载中的前缀。(注:1.1版本已经支持带前缀的名称空间)
因为这使得行为与1.1版本不兼容,所以我们决定引入一个新版本。在下面的短博客中,我将解释让"新"拆分器工作时必须注意的事项。
XML拆分器有两种:通用拆分器和迭代拆分器。通用拆分器将所有"头"节点存储到XPath定义的第一个拆分点,并将它们放在每个拆分块的前面。迭代拆分器仅提取XPath定义的节点。
1.2以下版本的行为,有效负载如下:
和
由于旧版本忽略了名称空间xmlns="sap"一个拆分点,XPath=/a/b/c
结果为"旧"通用拆分器:
1。拆分
2。拆分
"旧"迭代拆分器的结果:
1。拆分
2。Split
在新版本1.2中xmlns="sap"现在被考虑,XPath/a/b/c没有找到拆分点
要使版本1.2拆分上面的负载,您必须在IFlow的运行时配置的命名空间映射中定义一个命名空间,并在XPath中使用它。例如你可以定义
xmlns:n0=sap(IFlow工具中没有"in")
并为XPath编写
/n0:a/n0:b/n0:c
一个常见的错误是,快云服务器,为XPath定义了/n0:a/b/c,但这不会分割上面的有效负载,因为有效负载的命名空间继承给子节点。
相当于
这必须反映在XPath中,大数据风控,哪个云服务器,正确的分割XPath是
/n0:a/n0:b/n0:c
如果有效负载如果是
,那么XPath=/n0:a/b/c
将实际生成2个块。对于通用Splitter,块是
如果有效负载是
,那么XPath=/n0:a/n0:b/c
将为通用Splitter创建1个块。
但令人惊讶的是,结果是
在split中看到1!原因是1是在到达第一个拆分点的途中的通用拆分器的标头。请记住通用拆分器的规范,云计算与大数据,名称空间被继承到子节点。
如果负载有带有前缀的名称空间,那么不同拆分器版本的行为没有区别。
附录:
在商业世界中,有很多文档包含您不想看到的前述信息拆分文档时丢失。假设你有一个账户对账单,上面有你的名字和不同的项目。那么您可能希望每个项目在分割之后也包含您的名字。此行为由通用拆分器确保。我承认"通用拆分器"这个名称不是自我解释的,所以您必须学习后面的规范。
另一个负载示例,在拆分后还希望保留头信息:
如果您使用通用拆分器和XPath=/customer/order
拆分此负载,那么您将得到2个拆分
1。拆分:
2。拆分:
使用迭代拆分器和相同的XPath=/customer/order
只返回对应的节点
1。拆分:
2.拆分:
通用和迭代拆分器不仅可以拆分XML,还可以拆分CSV(文本文件),"表达式类型"等于"换行符"
如果传入的文件是
,那么您应该使用通用拆分器得到
1。拆分:
2。拆分:
在这里,列描述被添加到每个拆分中。
使用迭代拆分器,您可以得到3个拆分:
1。拆分:
2。拆分:
3.拆分:
限制:
●不能使用以"聚集"结尾的两个连续拆分器元素。●不能在子流程内使用PKCS7和IDOC拆分器。
,数据支持