我发现的唯一方法是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>