1 , PO Java Mapping 相关包,可以从 PO NWA 直接获取,方便本地测试
http://<host>:<port>/rep/repository/com.sap.xi.mapping.tool.lib_api.jar
http://<host>:<port>/rep/repository/com.sap.xpi.ib.mapping.lib.jar
2,直接实现接口 AbstractTransformation
以下为XML转JSON格式,无外层节点,直接为数据内容部分。
package com.demo.edi;
import java.io.InputStream;
import java.io.OutputStream;
import org.dom4j.Document;
import org.dom4j.io.SAXReader;
import com.sap.aii.mapping.api.AbstractTransformation;
import com.sap.aii.mapping.api.DynamicConfiguration;
import com.sap.aii.mapping.api.DynamicConfigurationKey;
import com.sap.aii.mapping.api.StreamTransformationConstants;
import com.sap.aii.mapping.api.StreamTransformationException;
import com.sap.aii.mapping.api.TransformationInput;
import com.sap.aii.mapping.api.TransformationOutput;
import net.sf.json.JSON;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
public class LEDIBean extends AbstractTransformation {
public LEDIBean() {
}
private static final DynamicConfigurationKey MESSAGE_ID = DynamicConfigurationKey
.create("http://sap.com/xi/XI/System/REST", "msgid");
public void transform(TransformationInput in, TransformationOutput out) throws StreamTransformationException {
InputStream inputStream;
OutputStream outputStream;
inputStream = null;
outputStream = null;
String res = "";
DynamicConfiguration conf = in.getDynamicConfiguration();
conf.put(MESSAGE_ID, StreamTransformationConstants.MESSAGE_ID);
try {
SAXReader reader = new SAXReader();
inputStream = in.getInputPayload().getInputStream();
Document document = reader.read(inputStream);
res = xml2json(document.asXML());
JSONObject json = JSONObject.fromObject(res);
res = json.getString("goodsReceipts");
out.getOutputHeader().setContentType("text/plain; charset=UTF-8");
outputStream = out.getOutputPayload().getOutputStream();
outputStream.write(res.getBytes("UTF-8"));
outputStream.flush();
}catch(Exception e){
e.printStackTrace();
}
}
public static String xml2json(String xml) {
String jsonStr = "";
XMLSerializer xmlSerializer = new XMLSerializer();
xmlSerializer.setSkipWhitespace(true);
xmlSerializer.setSkipNamespaces(true);
JSON json = xmlSerializer.read(xml);
jsonStr = json.toString(0);
System.out.println(jsonStr);
return jsonStr;
}
}
3,发布为jar( 或者直接打包为 ZIP压缩包 ),导入PO ESR,即可使用JAVA MAPPING。