Mulesoft XSLT Streaming Large xml文件

时间:2015-04-14 22:39:03

标签: xslt mule

我目前正在使用Mulesoft 3.6 CE。我有一个大的xml文件,我想将其拆分为小的xml元素并推送到jms队列。我正在尝试探索XSLT选项,以便在不编写代码的情况下使用mule的开箱即用流功能实现这一目标。

例如,我有一个传入的文件

<books> 
   <book>
     <isbn>1</isbn>
     <title>Book 1</isbn>
   </book>
   <book>
     <isbn>2</isbn>
     <title>Book 2</isbn>
   </book>
....
</books>

我希望将每个元素写入JMS队列以下代码段

<book>
    <isbn>1</isbn>
    <title>Book 1</isbn>
</book>

任何帮助都将受到高度赞赏。

此致 SRINIVAS

1 个答案:

答案 0 :(得分:0)

由于Mule支持XSLT 2.0 / 3.0,你可以尝试这样的东西,假设ISBN是唯一的

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="xml" encoding="UTF-8" indent="yes" />

    <xsl:template match="/books/book">
        <xsl:result-document method="xml" href="output_{isbn}.xml">
          <xsl:copy-of select="." />
        </xsl:result-document>
    </xsl:template>
</xsl:transform>

我不认为你能够在没有自定义代码或单独端口的情况下捕获其输出,但我不能100%确定Mule如何处理它。< / p>

说实话,我会质疑你是否会从中获得良好的表现 - 至少,我认为它的表现不如仅限前瞻的读者(Java中的XMLStreamReader) )只是继续删除那些<book>节点并将它们传递给你的JMS队列。