Я хочу использовать Java API для выполнения преобразования чайника.Теперь мне нужно передать xml в качестве параметра, что я и сделал, как показано ниже.
public String executeTrans(@RequestParam Map<String, Object> map) {
String xmlString = "<PersonList> " +
" <Person>" +
" <Name>tom</Name> " +
" <Age>30</Age>" +
" <Sex>1</Sex>" +
" </Person>" +
" <Person>" +
" <Name>john</Name>" +
" <Age>31</Age>" +
" <Sex>1</Sex>" +
" </Person>" +
"</PersonList>";
String filePath = map.get("filePath") + "";
String result = "";
if (filePath.isEmpty() || filePath.equals("null")) {
LOGGER.error("filePath is null");
return "";
}
filePath = PropertiesUtil.getProperty("kittle.file.path") + "/" + filePath;
map.put("abc", xmlString);
try {
CallKtrUtil.runTrans(filePath, map);
} catch (KettleException e) {
e.printStackTrace();
}
return result;
}
public static void runTrans(String filePath, Map<String, Object> paraMap) throws KettleException {
StepPluginType modelPluginType = StepPluginType.getInstance();
modelPluginType.getPluginFolders()
.add(new PluginFolder(PropertiesUtil.getProperty("kettle.pluginFolder.path")+"/kettle-json-plugin", false, true));
modelPluginType.getPluginFolders()
.add(new PluginFolder(PropertiesUtil.getProperty("kettle.pluginFolder.path")+"/pdi-xml-plugin", false, true));
KettleEnvironment.init();
TransMeta transMeta = new TransMeta(filePath);
Trans trans = new Trans(transMeta);
for (String keyString : paraMap.keySet()) {
trans.setVariable(keyString, paraMap.get(keyString) + "");
}
trans.prepareExecution(null);
trans.execute(null);
trans.waitUntilFinished();
}
мое преобразование выглядит следующим образом:
Я использую плагин Get data from XML для получения параметра,
, но это не работает, преобразование не может получить проходпараметр.Кто-нибудь может помочь?
Спасибо