Mulesoft XSLT Streaming Large xml files



我目前正在使用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>

任何帮助将不胜感激。

问候斯里尼瓦斯

由于 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 会如何处理这个问题。

老实说,我会质疑你是否会从中获得良好的性能 - 至少,我认为它的性能不如只前向阅读器(Java 中的 XMLStreamReader)继续切断这些<book>节点并将它们传递给你的 JMS 队列。

最新更新