首页 > 解决方案 > Apache Camel,通过 xslt-saxon 合并 XML 文档的问题

问题描述

我的骆驼路线(spring boot 应用程序)收到一个 xml 文件列表,我想通过 xslt 转换合并到一个组合的 xml 文件。

我在这条路线上执行转换时遇到了麻烦。我没有收到任何错误消息,控制台日志只是空白,没有任何反应。

它与document(concat('file:/',path))声明有关。当我删除此行时,转换执行得很好。但是,如果我通过另一个处理器(例如通过氧气)执行此转换,则一切都按预期工作(合并文件)。

我在这里明显错过了什么吗?

Spring boot: 2.5.4
Camel: 3.11.1

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-xslt-saxon</artifactId>
    <version>3.11.1</version>
</dependency>

这是作为转换输入的有效负载。

<Modules>
    <module>
        <moduleId>000001</moduleId>
        <moduleType>L</moduleType>
        <fileName>abc1.xml</fileName>
        <path>S:\abc\files\abc.xml</path>
        <dueDate>2021-10-01</dueDate>
    </module>
    <module>
        <moduleId>000002</moduleId>
        <moduleType>L</moduleType>
        <fileName>abc2.xml</fileName>
        <path>S:\abc\files\abc2.xml</path>
        <dueDate>2021-10-01</dueDate>
    </module>
</Modules>

骆驼路线....

@Override
public void configure() throws Exception {
                              
    from("direct:deduplicateRoute")
        .routeId(IConstants.DEDUP_ROUTE)
        .to("xslt-saxon:file://C:/\Users/\abc/\development/\merge.xsl")
        .log("${body}");                  
}

和 xslt 转换

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/XSL/Transform
    xmlns:xs=http://www.w3.org/2001/XMLSchema
    version="2.0">
    <xsl:template match="/">      
        <Modules>
            <xsl:apply-templates select="/Modules/module"/>
        </Modules>
    </xsl:template>

    <xsl:template match="/Modules/module">      
        <Module>
            <xsl:copy-of select="document(concat('file:/',path))"/>
        </Module>
    </xsl:template>     
</xsl:stylesheet>

标签: javaxsltapache-camelsaxon

解决方案


推荐阅读