我是靠谱客的博主 细心篮球,最近开发中收集的这篇文章主要介绍NiFi Groovy脚本, XML转JSONNiFi Groovy脚本, XML转JSON,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
NiFi Groovy脚本, XML转JSON
-
使用 ExecuteScript Processor
-
修改属性如下
Module Dircetory: Groovy 脚本依赖的 jar 包存放目录 -
Groovy 脚本
import org.apache.commons.io.IOUtils
import java.nio.charset.StandardCharsets
import com.alibaba.fastjson.JSONObject
import org.jdom2.Document
import org.jdom2.Element
import org.jdom2.input.SAXBuilder
/**
* @author xh-M 2021/8/10 14:41
*/
FlowFile flowFile = session.get()
InputStream read = session.read(flowFile)
String s = IOUtils.toString(read, String.valueOf(StandardCharsets.UTF_8))
read.close()
int index = s.indexOf("<");
String substring = s.substring(index);
JSONObject obj = new JSONObject();
try {
InputStream is = new ByteArrayInputStream(substring.getBytes("utf-8"));
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(is);
Element root = doc.getRootElement();
obj.put(root.getName(), iterateElement(root));
String result = obj.toString()
OutputStream write = session.write(flowFile);
IOUtils.write(result,write);
write.close()
} catch (Exception e) {
e.printStackTrace();
}
session.transfer(flowFile,REL_SUCCESS);
private static Map iterateElement(Element element) {
List jiedian = element.getChildren();
Element et = null;
Map obj = new HashMap();
List list = null;
for (int i = 0; i < jiedian.size(); i++) {
list = new LinkedList();
et = (Element) jiedian.get(i);
if (et.getTextTrim().equals("")) {
if (et.getChildren().size() == 0)
continue;
if (obj.containsKey(et.getName())) {
list = (List) obj.get(et.getName());
}
list.add(iterateElement(et));
obj.put(et.getName(), list);
} else {
if (obj.containsKey(et.getName())) {
list = (List) obj.get(et.getName());
}
list.add(et.getTextTrim());
obj.put(et.getName(), list);
}
}
return obj;
}
- jar包如下, 可在阿里Maven仓库中下载
最后
以上就是细心篮球为你收集整理的NiFi Groovy脚本, XML转JSONNiFi Groovy脚本, XML转JSON的全部内容,希望文章能够帮你解决NiFi Groovy脚本, XML转JSONNiFi Groovy脚本, XML转JSON所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复