首页 > 解决方案 > 如何在wso2中将文本转换为多个xml

问题描述

<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 然后需要插入到数据库中。如何将csv形成多个xml?

假设有些工作表包含 3 列、4 列或 5 列。取决于需要形成xml的子节点。

请告诉我

标签: wso2wso2esbwso2ei

解决方案


您可以使用 Data-mapper 调解器使用 csv 文件构造 xml 有效负载。请参阅与 CSV 和 XML 转换相关的示例。

例如,您可以根据 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(例如:xpath="//row")的每个子 xml 元素(即元素以 'row' 标记开头),并且对每个子元素执行 db 查询。

如果您使用数据服务来执行插入查询,则可以使用 Iterate 调解器,它为每个 xml 子元素调用数据服务。否则,您可以使用 ForEach 中介器和DBReport中介器为每个 xml 子元素执行插入查询。


推荐阅读