如何使用WSO2 ESB调解固定长度的文本数据
我需要使用WSO2 ESB将通过MQ接收到的固定长度文本数据(每条消息一行文本)转换为XML格式,然后通过HTTP将转换后的数据发送到SOAP端点 我知道我可以使用WSO2 ESB管理控制台配置一个插入序列来使用substring函数进行数据解析和映射,然后设置一个代理服务来包含这个配置的序列 我需要关于如何在步骤中详细完成所有这些的帮助。如果有人能提供一些关于如何操作的示例或网页链接,我将不胜感激如何使用WSO2 ESB调解固定长度的文本数据,wso2,esb,Wso2,Esb,我需要使用WSO2 ESB将通过MQ接收到的固定长度文本数据(每条消息一行文本)转换为XML格式,然后通过HTTP将转换后的数据发送到SOAP端点 我知道我可以使用WSO2 ESB管理控制台配置一个插入序列来使用substring函数进行数据解析和映射,然后设置一个代理服务来包含这个配置的序列 我需要关于如何在步骤中详细完成所有这些的帮助。如果有人能提供一些关于如何操作的示例或网页链接,我将不胜感激 谢谢 你应该看看smooks,我认为这是最好的解决方案: CSV:http://wso2.com
谢谢 你应该看看smooks,我认为这是最好的解决方案: CSV:
http://wso2.com/library/blog-post/2013/09/csv-to-xml-transformation-with-wso2-esb-smooks-mediator/
固定长度文本:http://vvratha.blogspot.fr/2014/05/processing-large-text-file-using-smooks.html
另一个解决方案是编写自己的messageBuilder,搜索“
org.apache.axis2.format.PlainTextBuilder
”以查找源代码……我同意Jean Michel的观点,smooks将是一个很好的解决方案。但是,这也可以在一个简单的代理服务中实现。设置到端点的简单直通代理。然后,在源代码视图(或向导)中打开它,并配置插入序列以添加PayloadMediator
下面是一个如何使用负载中介器的示例[1]
下面是一个摘录的示例,演示了使用一些xpath表达式从输入中提取固定长度字段时的情况:
<payloadFactory media-type="xml">
<format>
<m:body xmlns:m="http://services.samples">
<m:field1>$1</m:field1>
<m:field2>$2</m:field2>
</m:body>
</format>
<args>
<arg expression="substring(//*,0,10)"/>
<arg expression="substring(//*,10,10)"/>
</args>
</payloadFactory>
$1
$2
对于那些对工作解决方案感兴趣的人,这里是我的smooks配置:
<?xml version="1.0"?>
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" xmlns:fl="http://www.milyn.org/xsd/smooks/fixed-length-1.3.xsd">
<fl:reader fields="price[5]?trim,quantity[5]?trim,symbol[5]?trim.upper_case,comment[10]?trim" recordElementName="order">
<fl:listBinding beanId="order" class="test.Order" />
</fl:reader>
</smooks-resource-list>
此外,还需要将test.Order的jar文件添加到WSO2 ESB的类路径中
<?xml version="1.0"?>
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd" xmlns:fl="http://www.milyn.org/xsd/smooks/fixed-length-1.3.xsd">
<fl:reader fields="price[5]?trim,quantity[5]?trim,symbol[5]?trim.upper_case,comment[10]?trim" recordElementName="order">
<fl:listBinding beanId="order" class="test.Order" />
</fl:reader>
</smooks-resource-list>