XmlJsonDataFormat xmlJsonFormat = new XmlJsonDataFormat();
xmlJsonFormat.setEncoding("UTF-8");
xmlJsonFormat.setForceTopLevelObject(true);
xmlJsonFormat.setTrimSpaces(true);
xmlJsonFormat.setSkipNamespaces(true);
xmlJsonFormat.setRemoveNamespacePrefixes(true);
在将源目录中的XML文件发送到目标目录之前,将其转换为JSON格式
from("file:/inn?noop=true").marshal(xmlJsonFormat)
.setHeader(Exchange.FILE_NAME, simple("${file:onlyname.noext}.json"))
.to("file:/out").end();
当我想要一个来自XML的JSON字符串而不使用POJO时,它非常有效。
但是现在考虑一个XML,我想省略其中的一个元素。我应该使用除camel-xmljson之外的另一个lib吗?这种方式是正确的实现方式吗:
- JAXB-lib从XML获取POJO
- Jackson lib从POJO获取JSON,并从编组中排除POJO字段
我理解,即使我也会尽量避免在骆驼路线上出现任何POJO。
话虽如此,我不会直接把XML放出去。我会在xmljson组件后面放一个XSLT,这样我就可以修剪xml以获得所需的输出。
感谢gnanagurus!使用XSLT非常简单。此外,xslt:组件包含在Camel核心的最后一个版本中。我定义了一个xlst文件"transform.xsl",它包括要省略的字段。然后定义了骆驼路线:
from("file:/inn?noop=true")
.to("xslt:file:src/transform.xsl")
.marshal(xmlJsonFormat)
.setHeader(Exchange.FILE_NAME, simple("${file:onlyname.noext}.json"))
.to("file:/out").end();