一、基础知识
DataX官网,基本的安装、部署、操作,基本的原理;
二、需求
项目需要通过DataX读取服务器上某文件夹下xml文件作为数据源;
三、问题
1、已有插件ftpreader、txtfilereader,可以去txt文本,CSV文件,但是不支持读取xml文件;
2、百度、谷歌网上野生的读取xml文件的插件,no result;
四、自力更生开发一款读取xml文件的插件
由于属于定制开发的插件,我给这个插件取了一个名字ftpxmlreader,从名字可以看出,其实就是复制了一份ftpreader插件,去掉原生读取txt、csv文件的功能,只增加读取xml文件的的功能;
因为只增加读取xml功能,那么思路就很明了:读取xml的每个节点的值然后塞进某个对象中去,那么我们获取的值到底塞到哪里去呢?通过源码的阅读,发现不管是txt还是csv,最终的值是放在一个parsesRows的一维数组里面:
然后通过UnstructuredStorageReaderUtil.transportOneRecord方法去转化每一个值所匹配的数据类型,并将数据类型保存在一个recoder中:
那么我们就需要读取一个xml节点的数据放入这个parseRows的数组里面,我这里选择的是通过jdom2来读取xml文件,利用SAXBuilder获取输入流中xml数据
,这里的inputStream就是从服务器上读取的xml文件流(参考ftpreader插件);
下一步就是获取节点数据然后塞数据到parsesRows:
该插件开发的大体流程就这样;