java - 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>
解决方案
推荐阅读
- javascript - div onclick中的Javascript突出显示行
- java - 用于打开和制作多个驱动程序和选项的硒代码
- javascript - 如何使用一个删除按钮删除选中的项目
- c++ - 发生了什么:C++ std::move on std::shared_ptr 增加了 use_count?
- java - 如何修复休眠配置中的 NPE?
- c - 为什么这个人使用 (1 << 0)?
- routing - TYPO3 Route Enhancers:列表(带有可选的分页和过滤器)+同一页面上的详细信息
- amazon-web-services - AWS S3 Select - 从 2 个不同级别的 json 检索数据
- java - 如何使用@StartNode 关系查询 Neo4jRepository?
- pytorch - 以表达式为条件使用“with torch.no_grad()”的更简洁方法