<payloadFactory media-type="xml" description="Select Sheets">
<format>
<Response>$1</Response>
</format>
<args>
<arg evaluator="xml" expression="get-property('name')"/>
</args>
</payloadFactory>
<script language="js"><![CDATA[var csv = mc.getPayloadXML();
var lines = (csv + "").split("\n");
for (var l = 1; l <= lines.length; l++) {
cells = (lines[l] + "").split(";");
}
]]></script>
我正在尝试通过esb选项从excel获取数据,我也正在获取输出,但不能正确获取。请指导我去做。正在从多个Excel工作表或多个Excel文件中检索数据,这些工作是根据我形成的CSV检索到的数据进行的。从csv我需要形成多个xml,然后需要插入db。如何形成CSV到多个XML?
假设某些工作表包含3列,4列或5列。取决于需要形成xml的子节点。
请让我知道
答案 0 :(得分:1)
您可以使用Data-mapper介体通过csv文件构造xml有效负载。请参阅与CSV和XML转换有关的examples。
例如,您可以根据csv工作表中的列数创建xml有效负载。
<rows>
<row>
<col1>value1</col1>
<col2>value2</col2>
<col3>value3</col3>
</row>
<row>
<col1>value4</col1>
<col2>value5</col2>
<col3>value6</col3>
</row>
</rows>
创建xml有效内容后,您可以使用Iterate介体或ForEach介体来遍历给定xpath(例如,以'row'标记开头的元素)的每个子xml元素(例如:xpath =“ // row”),然后为每个子元素执行数据库查询。
如果使用数据服务执行插入查询,则可以使用Iterate中介器,该中介器为每个xml子元素调用数据服务。另外,您可以将ForEach介体与DBReport介体一起使用,以对每个xml子元素执行插入查询。