如何在使用camel-xmljson-JAR将XML字符串转换为JSON字符串时省略字段


 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吗?这种方式是正确的实现方式吗:

  1. JAXB-lib从XML获取POJO
  2. 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();

最新更新