2015-04-14 103 views
1

我目前使用Mulesoft 3.6 CE。我有一個很大的xml文件,我想將它分解成小的xml元素並推送到jms隊列。我正在嘗試探索XSLT選項,以便在不編寫代碼的情況下使用mule的開箱流功能來實現此目的。Mulesoft XSLT流媒體大型XML文件

例如我有一個進入的文件作爲

<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

回答

0

因爲騾子不支持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隊列。