如何使用带 java 的 smooks 将 json 转换为 EDIFACT

How to convert a json to EDIFACT using smooks with java

我发现的唯一方法是 edi 而不是 edifact,但是当我用 edifact

更改 smooks-config.xml
<smooks-resource-list
    xmlns="https://www.smooks.org/xsd/smooks-2.0.xsd"
    xmlns:edifact="https://www.smooks.org/xsd/smooks/edifact-2.0.xsd">

<edifact:unparser   unparseOnElement="/Order" schemaURI="/edi-to-xml-mapping.dfdl.xsd" segmentTerminator="%NL;" compositeDataElementSeparator="^"/>

<edifact:parser schemaURI="/edi-to-xml-order-mapping.dfdl.xsd" segmentTerminator="%NL;" dataElementSeparator="*"
                compositeDataElementSeparator="^"/>

我总是收到错误消息:模式定义错误:位置 /EDIFACT-Interchange.dfdl.xsd 没有模式文档。

Smooks EDI cartridge docs 中所述,应导入 EDIFACT-Messages.dfdl.xsd DFDL 模式。例如:

<?xml version="1.0"?>
<smooks-resource-list xmlns="https://www.smooks.org/xsd/smooks-2.0.xsd"
                      xmlns:edifact="https://www.smooks.org/xsd/smooks/edifact-2.0.xsd">

    <edifact:parser schemaURI="/d03b/EDIFACT-Messages.dfdl.xsd"/>

    <edifact:unparser schemaURI="/d03b/EDIFACT-Messages.dfdl.xsd" unparseOnNode="/Interchange"/>

</smooks-resource-list>

确保相应的架构包在您的 Java 类路径中。上例的 schema pack Maven dependency 声明是:

<dependency>
  <groupId>org.smooks.cartridges.edi</groupId>
  <artifactId>edifact-schemas</artifactId>
  <version>2.0.0-M3</version>
  <classifier>d03b</classifier>
</dependency>