一种读取XML文件的方法及装置、设备、存储介质制造方法及图纸

技术编号:31224685 阅读:23 留言:0更新日期:2021-12-08 09:26
本申请公开了一种读取XML文件的方法及装置、设备、存储介质,其中,所述方法包括:获取包括有M条XML记录的XML文件,M为大于等于1的整数;按照所述M条XML记录的先后顺序,利用N个Xpath依次对每一所述XML记录中的字段进行读取,对应得到N个字段,N为大于等于1的整数;按照所述M条XML记录的先后顺序,确定从每一所述XML记录读取的N个字段对应的行字符串,将每一所述行字符串转化为满足DataX协议的字符串,以供DataX的写线程处理。本申请提供的技术方案一方面利用Xpath读取XML字段可以处理复杂的XML数据;另一方面一条一条地顺序读取字符串,可以将读取的字符串转化为满足DataX协议的字符串,以供DataX的写线程处理。以供DataX的写线程处理。以供DataX的写线程处理。

【技术实现步骤摘要】
一种读取XML文件的方法及装置、设备、存储介质


[0001]本申请涉及数据库技术,涉及但不限于一种读取XML文件的方法及装置、设备、存储介质。

技术介绍

[0002]DataX是一个异构数据源离线同步工具,实现了包括关系型数据库、Hadoop分布式文件系统(Hadoop File System,HDFS)、Hive、开放数据处理服务(Open Data Processing Service,ODPS)、HBase、文件传输协议(File Transfer Protocol,FTP)等各种异构数据源之间稳定高效的数据同步功能。其中,Hive是一个构建在Hadoop上的数据仓库框架,是一个通用的、可伸缩的数据处理平台;HBase是一个分布式的、面向列的开源数据库。
[0003]目前DataX支持抽取FTP和HDFS,但存在以下问题:第一、目前仅支持读取文本文件(TXT);第二、TXT文件中的概要为一张二维表,由于二维表不支持保存可扩展标记语言(Extensible Markup Language,XML)等非结构型数据,从而无法直接将DataX支持读取TXT文件的方式应用于对于XML文件的读取,其中,XML是标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。

技术实现思路

[0004]有鉴于此,本申请为解决现有技术中存在的至少一个问题而提供一种读取XML文件的方法及装置、设备、存储介质。
[0005]本申请实施例的技术方案是这样实现的:
[0006]第一方面,本申请提供一种读取XML文件的方法,所述方法包括:
[0007]获取包括有M条XML记录的XML文件,M为大于等于1的整数;按照所述M条XML记录的先后顺序,利用N个Xpath依次对每一所述XML记录中的字段进行读取,对应得到N个字段,N为大于等于1的整数;按照所述M条XML记录的先后顺序,确定从每一所述XML记录读取的N个字段对应的行字符串,将每一所述行字符串转化为满足DataX协议的字符串,以供DataX的写线程处理。
[0008]第二方面,本申请提供一种读取XML文件的装置,所述装置包括:
[0009]获取模块,用于获取包括有M条XML记录的XML文件,M为大于等于1的整数;读取模块,用于按照所述M条XML记录的先后顺序,利用N个Xpath依次对每一所述XML记录中的字段进行读取,对应得到N个字段,N为大于等于1的整数;确定模块,用于按照所述M条XML记录的先后顺序,确定从每一所述XML记录读取的N个字段对应的行字符串,将每一所述行字符串转化为满足DataX协议的字符串,以供DataX的写线程处理。
[0010]第三方面,本申请提供一种读取XML文件的设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述读取XML文件的方法的步骤。
[0011]第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该计算
机程序被处理器执行时实现上述读取XML文件的方法的步骤。
[0012]本申请中首先获取需要读取的XML文件,然后按照M条XML记录的先后顺序,利用N个Xpath依次对每一所述XML记录中的字段进行读取,得到N个字段,最后顺序将从每一XML记录读取的N个字段转化为对应的满足DataX协议的字符串,以供DataX的写线程处理。这样,本申请提供的技术方案,一方面利用Xpath读取XML字段可以处理复杂的XML数据;另一方面一条一条地顺序读取字符串,可以将读取的字符串转化为满足DataX协议的字符串,以供DataX的写线程处理。
[0013]在一些实施例中,首先描述了如何根据XML文件的读取需求,将N个循环路径和与N个循环路径一一对应的N个抽取字段组装得到N个Xpath。然后描述了可以使用SAX元素处理解析器对文档进行顺序扫描,在扫描过程中按照所述M条XML记录的先后顺序,利用N个Xpath依次对每一所述XML记录中的字段进行读取,对应得到N个字段。这样,一方面使用SAX元素处理解析器在扫描的过程中,按照所述M条XML记录的先后顺序,利用N个Xpath依次对每一所述XML记录中的字段进行读取,方便后续一条一条处理读取出的字段,以供DataX的写线程处理;另一方面利用Xpath读取XML可以方便抽取元素节点和属性节点。
[0014]在一些实施例中,描述了首先用分隔符将字段转化成对应的行字符串,再将每一所述行字符串序列化成字节序列字符串,最后将每一所述字节序列字符串转化为满足DataX协议的字符串,以供DataX的写线程处理。这样可以使用分隔符、序列化的方法实现将字段转化为满足DataX协议的字符串,以供DataX的写线程处理。
[0015]在一些实施例中,描述了使用阻塞队列处理数据。这样,将解析的来自于XML文件的记录存入用于DataX读线程消费的阻塞队列中去,从而实现了DataX不需要一次性将XML文件load到内存的情况下能够读取XML文件上的一条记录,避免将大文本一次性装载到内存中去从而降低了DataX的内存压力。
[0016]在一些实施例中,描述了使用阻塞队列处理数据。这样,将解析的来自于XML文件的记录存入用于DataX读线程消费的阻塞队列中去,从而实现了DataX不需要一次性将XML文件load到内存的情况下能够读取XML文件上的一条记录,避免将大文本一次性装载到内存中去从而降低了DataX的内存压力。
附图说明
[0017]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:
[0018]图1为本申请实施例提供的一种读取XML文件的方法的实现流程示意图;
[0019]图2为本申请实施例提供的另一种读取XML文件的方法的实现流程示意图;
[0020]图3A为本申请实施例提供的再一种读取XML文件的方法的实现流程示意图;
[0021]图3B为本申请实施例提供的又一种读取XML文件的方法的实现流程示意图;
[0022]图4为本申请实施例提供的又一种读取XML文件的方法的实现流程示意图;
[0023]图5为本申请实施例提供的一种读取XML文件的装置的组成结构示意图;
[0024]图6为本申请实施例提供的一种读取XML文件的设备的硬件实体示意图。
具体实施方式
[0025]本申请实施例提供一种读取XML文件的方法,图1为本申请实施例提供的一种读取XML文件的方法的实现流程示意图,如图1所示,所述方法包括:
[0026]步骤S101、获取包括有M条XML记录的XML文件,M为大于等于1的整数;
[0027]一个XML文件包括有M条XML记录。要读取XML文件,首先要获取一个XML文件。
[00本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种读取XML文件的方法,其特征在于,所述方法包括:获取包括有M条XML记录的XML文件,M为大于等于1的整数;按照所述M条XML记录的先后顺序,利用N个Xpath依次对每一所述XML记录中的字段进行读取,对应得到N个字段,N为大于等于1的整数;按照所述M条XML记录的先后顺序,确定从每一所述XML记录读取的N个字段对应的行字符串,将每一所述行字符串转化为满足DataX协议的字符串,以供DataX的写线程处理。2.根据权利要求1所述的方法,其特征在于,所述按照所述M条XML记录的先后顺序,利用N个Xpath依次对每一所述XML记录中的字段进行读取,对应得到N个字段,包括:根据所述XML文件的读取需求,组装N个Xpath;在使用流扫描方式扫描所述M条XML记录时,按照所述M条XML记录的先后顺序,利用N个Xpath依次对每一所述XML记录中的字段进行读取,对应得到N个字段。3.根据权利要求2所述的方法,其特征在于,所述根据所述XML文件的读取需求,组装N个Xpath,包括:根据所述XML文件的读取需求,确定N个循环路径和与所述N个循环路径一一对应的N个抽取字段;根据每一所述N个循环路径和对应的N个抽取字段组装成一个Xpath,得到所述N个Xpath。4.根据权利要求1所述的方法,其特征在于,所述按照所述M条XML记录的先后顺序,确定从每一所述XML记录读取的N个字段对应的行字符串,包括:按照所述M条XML记录的先后顺序,确定从每一所述XML记录读取的N个字段;将每一所述N个字段用分隔符转化成对应的行字符串。5.根据权利要求1所述的方法,其特征在于,所述将每一所述行字符串转化为满足DataX协议的字符串,以供DataX的写线程处理,包括:将每一所述行字符串序列化成字节序列字符串;将每一所述字节序列字...

【专利技术属性】
技术研发人员:吴文兵
申请(专利权)人:中国移动通信集团有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1