Как преобразовать json в EDIFACT с помощью smooks с java

#java #smooks

Вопрос:

Единственный способ, который я нашел, — это edi, а не edifact, но когда я меняю smooks-config.xml с edifact

 <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="^"/>
 

Я всегда получаю сообщение об ошибке: Ошибка определения схемы: нет документа схемы в location / EDIFACT-Interchange.dfdl.xsd.

Ответ №1:

Как описано в документах Smooks EDI cartridge, схема 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 classpath. Объявление зависимости Maven пакета схем для приведенного выше примера:

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