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



我发现的唯一方法是edi不是edifact,而是当我用edifact更改smokes -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="^"/>

我总是得到一个错误:Schema Definition error: No Schema document at location/EDIFACT-Interchange.dfdl.xsd.

如Smooks EDI盒式文档中所述,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类路径中。上面示例的模式包Maven依赖声明为:

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