CN111753140A - Xml文件解析方法及相关设备 - Google Patents
Xml文件解析方法及相关设备 Download PDFInfo
- Publication number
- CN111753140A CN111753140A CN202010585042.1A CN202010585042A CN111753140A CN 111753140 A CN111753140 A CN 111753140A CN 202010585042 A CN202010585042 A CN 202010585042A CN 111753140 A CN111753140 A CN 111753140A
- Authority
- CN
- China
- Prior art keywords
- attribute
- class
- key value
- mapping table
- xml file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/81—Indexing, e.g. XML tags; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
- G06F40/295—Named entity recognition
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及文件解析技术领域,提供一种XML文件解析方法及相关设备。所述文件解析方法获取XML文件和所述XML文件对应的实体类;生成所述实体类的属性注解;根据所述属性注解将所述实体类的多个属性存储至第一键值映射表;根据所述第一键值映射表获取所述XML文件中的XML数据,得到存储所述XML数据的第二键值映射表;将所述实体类实体化为类对象;根据所述第二键值映射表将所述XML数据赋值给所述类对象。本发明能够提升解析XML文件的效率。
Description
技术领域
本发明涉及文件解析技术领域,具体涉及一种XML文件解析方法、装置、计算机设备及计算机可读存储介质。
背景技术
随着web开发的日益流行,数据交互也越发的重要。无论是前端和后端之间的交互,还是客户端和服务器之间的交互,或是不同服务器之间的交互都体现了数据的交互。而网络的本质就是一个数据之间互相传递、互相修改、互相影响的拓扑结构。为了解决数据之间的传递问题,国际之间渐渐形成了规范:基于一定格式的传递方式,如XML(ExtensibleMarkup Language,扩展标记语言)。XML是一种通用的数据交互格式,它的平台无关性、语言无关性、系统无关性给数据集成与交互带来了极大的方便。因此,XML一直占据巨大的数据交互的份额。
但是,对于XML文件,通常需要程序员根据当前的业务来书写相应的解析方法。目前的XML文件解析方法使用范围小且重复利用率低,对XML文件的解析效率较低。
发明内容
鉴于以上内容,有必要提出一种XML文件解析方法、装置、计算机设备及计算机可读存储介质,其可以提升解析XML文件的效率。
本申请的第一方面提供一种XML文件解析方法,所述文件解析方法包括:
获取XML文件和所述XML文件对应的实体类;
生成所述实体类的属性注解;
根据所述属性注解将所述实体类的多个属性存储至第一键值映射表;
根据所述第一键值映射表获取所述XML文件中的XML数据,得到存储所述XML数据的第二键值映射表;
将所述实体类实体化为类对象;
根据所述第二键值映射表将所述XML数据赋值给所述类对象。
另一种可能的实现方式中,所述生成所述实体类的属性注解包括:
生成所述属性子注解的定义代码,所述定义代码中的生命周期属性为运行期;
若所述定义代码中存在所述实体类的指定属性的默认值,将所述指定属性的默认值赋值给所述指定属性对应的指定属性子注解;
若所述定义代码中不存在所述实体类的指定属性的默认值,将所述指定属性的声明名赋值给所述指定属性子注解。
另一种可能的实现方式中,所述将所述指定属性的声明名赋值给所述指定属性子注解包括:
对所述指定属性的声明名进行格式转换,使格式转换后的声明名符合所述指定属性子注解的格式标准;
将所述格式转换后的声明名赋值给所述指定属性子注解。
另一种可能的实现方式中,所述根据所述属性注解将所述实体类的多个属性存储至第一键值映射表包括:
通过反射方法根据所述属性注解获取所述实体类的类名和所述实体类的多个属性;
将所述实体类的类名和所述实体类的多个属性存储至所述第一键值映射表的key值。
另一种可能的实现方式中,所述根据所述第一键值映射表获取所述XML文件中的XML数据包括:
将所述XML文件读取为文件对象;
根据所述第一键值映射表的key值确定所述文件对象的类节点和所述类节点的指定属性子节点;
在所述第一键值映射表中将所述指定属性子节点的值赋值给所述指定属性子节点对应的key值的value值。
另一种可能的实现方式中,所述根据所述第二键值映射表将所述XML数据赋值给所述类对象包括:
依次获取所述第二键值映射表中的键值数据对;
将所述类对象中属性名与该键值数据对的key值一致的属性确定为目标属性;
将该键值数据对的value值赋值给所述目标属性。
另一种可能的实现方式中,所述将该键值数据对的value值赋值给所述目标属性包括:
判断所述实体类中是否存在set方法;
若所述实体类中存在set方法,通过set方法将该键值数据对的value值赋值给所述目标属性。
本申请的第二方面提供一种XML文件解析装置,所述文件解析装置包括:
第一获取模块,用于获取XML文件和所述XML文件对应的实体类;
生成模块,用于生成所述实体类的属性注解;
存储模块,用于根据所述属性注解将所述实体类的多个属性存储至第一键值映射表;
第二获取模块,用于根据所述第一键值映射表获取所述XML文件中的XML数据,得到存储所述XML数据的第二键值映射表;
实体化模块,用于将所述实体类实体化为类对象;
赋值模块,用于根据所述第二键值映射表将所述XML数据赋值给所述类对象。
本申请的第三方面提供一种计算机设备,所述计算机设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现所述XML文件解析方法。
本申请的第四方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述XML文件解析方法。
本发明可以解析XML文件,能够提升解析XML文件的效率。传统的解析方法,必须参照XML标签及其属性逐一解析,工作量较大、任务较繁琐。本发明只需要生成所述实体类的属性注解;根据所述属性注解获取XML数据并将XML数据赋值给类对象。提升解析效率,从而提高了开发效率,节省了开发时间。
附图说明
图1是本发明实施例提供的XML文件解析方法的流程图。
图2是本发明实施例提供的XML文件解析装置的结构图。
图3是本发明实施例提供的计算机设备的示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
优选地,本发明的XML文件解析方法应用在一个或者多个计算机设备中。所述计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
实施例一
图1是本发明实施例一提供的XML文件解析方法的流程图。所述XML文件解析方法应用于计算机设备,用于解析XML文件,能够提升解析XML文件的效率。
如图1所示,所述XML文件解析方法包括:
101,获取XML文件和所述XML文件对应的实体类。
例如,XML文件可以是学生XML文件(即该XML文件的角色标签为学生),学生XML文件包括学生姓名、学生性别、学生年龄等标签。如“<people name=“Student”><attributename=“age”>19</attribute><attribute name=“gender”>男</attribute><attributename=“name”>张三</attribute></people>”。学生XML文件对应的学生实体类包括学生姓名、学生性别、学生年龄等属性。学生XML文件对应的学生实体类可以是“public classStudent{private String name;private String sex;private int age;}”。
102,生成所述实体类的属性注解。
属性子注解是一个Java类。所述计算机设备在运行过程中可以扫描到所述属性子注解(即所述属性子注解具有标记所述属性子注解对应的属性的作用),可以通过反射解析所述属性子注解对应的属性。
可以为需要解析的实体类生成属性注解。例如,三个实体类A、B、C,其中B不需要解析,则生成A和C的属性注解。
属性注解是对一个实体类的整体注解;属性子注解是对实体类的属性进行注解。所述属性注解包括多个属性子注解,所述实体类的每个属性对应一个属性子注解。
在一具体实施例中,所述生成所述实体类的属性注解包括:
生成所述属性子注解的定义代码,所述定义代码中的生命周期属性为运行期;
若所述定义代码中存在所述实体类的指定属性的默认值,将所述指定属性的默认值赋值给所述指定属性对应的指定属性子注解;
若所述定义代码中不存在所述实体类的指定属性的默认值,将所述指定属性的声明名赋值给所述指定属性子注解。
通过上述两种方式给所述指定属性子注解赋值,可以增加场景适应性。即当所述定义代码中存在所述实体类的指定属性的默认值时,能够生成所述实体类的属性注解;当所述定义代码中不存在所述实体类的指定属性的默认值时,也能够生成所述实体类的属性注解。可以根据解析需要或开发时效将所述实体类的指定属性的默认值加入所述定义代码。例如,当不能通过所述指定属性的声明名赋值给所述指定属性子注解,需要将所述实体类的指定属性的默认值加入所述定义代码。当能够通过所述指定属性的声明名赋值给所述指定属性子注解,且开发人员没有开发工时不足时,可以不用将所述实体类的指定属性的默认值加入所述定义代码。
在一具体实施例中,所述将所述指定属性的声明名赋值给所述指定属性子注解包括:
对所述指定属性的声明名进行格式转换,使格式转换后的声明名符合所述指定属性子注解的格式标准;
将所述格式转换后的声明名赋值给所述指定属性子注解。
例如,生成所述实体类的属性注解可以是“@XMLEntity public class Student{@XMLClosure(name="name")private String name;@XMLClosure(name="sex")privateString sex;@XMLClosure(name="age")private int age;}”。其中,@XMLEntity表示该类是作为XML对应的一个实体,可以用来接收解析之后的XML数据;@XMLClosure(name="age")表示要解析的xml中存在age标签,需要对其进行解析的标志。
属性注解是对一个实体类的整体注解,如上例中的@XMLEntity是用于注解实体类Student;属性子注解是对实体类Student的属性(如name、age等)进行注解。所述实体类的每个属性对应一个属性子注解,如三个属性name、age、sex分别对应一个属性子注解@XMLClosure。
103,根据所述属性注解将所述实体类的多个属性存储至第一键值映射表。
根据所述属性注解将所述实体类的多个属性的数据提取出,并存储至第一键值映射表。由于每个属性对应一个属性子注解,可以通过各个属性子注解准确地将各个属性的数据存储至所述第一第一键值映射表。
在一具体实施例中,所述根据所述属性注解将所述实体类的多个属性存储至第一键值映射表包括:
通过反射方法根据所述属性注解获取所述实体类的类名和所述实体类的多个属性;
将所述实体类的类名和所述实体类的多个属性存储至所述第一键值映射表的key值。
所述第一键值映射表可以是Map(Java中的结合对象)。通过反射方法获取的一个实体类的类名可以为Student,实体类的多个属性为name、age;将类名Student、属性name和属性age写到内存中的Map的key值。
104,根据所述第一键值映射表获取所述XML文件中的XML数据,得到存储所述XML数据的第二键值映射表。
所述第一键值映射表中存储待获取数据的key值,通过待获取数据的key值从所述XML文件中获取对应的数据,避免获取XML文件中的全部XML数据,增加解析效率。
在一具体实施例中,所述根据所述第一键值映射表获取所述XML文件中的XML数据包括:
将所述XML文件读取为文件对象;
根据所述第一键值映射表的key值确定所述文件对象的类节点和所述类节点的指定属性子节点;
在所述第一键值映射表中将所述指定属性子节点的值赋值给所述指定属性子节点对应的key值的value值。
例如,XML文件为“<people name=“Teacher”><attribute name=“age”>39</attribute><attribute name=“gender”>男</attribute><attribute name=“name”>李四</attribute></people><people name=“Student”><attribute name=“age”>19</attribute><attribute name=“gender”>男</attribute><attribute name=“name”>张三</attribute></people>”,其中,读取后的该文件对象的节点包括Student、Teacher,属性子节点包括name、age、gender。第一键值映射表的key值包括类名Student、属性name和属性age;将Student确定为该文件对象的类节点,将该文件对象的节点Student中的属性name和属性age确定为类节点Student的指定属性子节点。在第一键值映射表中将指定属性子节点的值(name=“张三”、age=“19”)赋值给指定属性子节点对应的key值对应的value值。
105,将所述实体类实体化为类对象。
所述将所述实体类实体化为类对象的过程是根据抽象的实体类新建一个具体的类对象,且类对象具有实体类的属性。
106,根据所述第二键值映射表将所述XML数据赋值给所述类对象。
在一具体实施例中,所述根据所述第二键值映射表将所述XML数据赋值给所述类对象包括:
依次获取所述第二键值映射表中的键值数据对;
将所述类对象中属性名与该键值数据对的key值一致的属性确定为目标属性;
将该键值数据对的value值赋值给所述目标属性。
例如,实体类为“@public class Student{private String name;private intage;}”,依次获取第二键值映射表中的键值数据对分别为name=“张三”、age=“19”,将该实体类的类对象中的“name”属性和“age”属性确定为目标属性,将“张三”赋值给目标属性“name”,将“19”赋值给目标属性“age”。
在一具体实施例中,所述将该键值数据对的value值赋值给所述目标属性包括:
判断所述实体类中是否存在set方法;
若所述实体类中存在set方法,通过set方法将该键值数据对的value值赋值给所述目标属性。
实施例一的XML文件解析方法解析XML文件,能够提升解析XML文件的效率。传统的解析方法,必须参照XML标签及其属性逐一解析,工作量较大、任务较繁琐。本发明只需要生成所述实体类的属性注解;根据所述属性注解获取XML数据并将XML数据赋值给类对象。提升解析效率,从而提高了开发效率,节省了开发时间。
在另一实施例中,所述文件解析方法还包括:
将所述类对象解析为所述XML文件。
实施例二
图2是本发明实施例二提供的XML文件解析装置的结构图。所述XML文件解析装置20应用于计算机设备。所述XML文件解析装置20用于解析XML文件,能够提升解析XML文件的效率。
如图2所示,所述XML文件解析装置20可以包括第一获取模块201、生成模块202、存储模块203、第二获取模块204、实体化模块205、赋值模块206。
第一获取模块201,用于获取XML文件和所述XML文件对应的实体类。
例如,XML文件可以是学生XML文件(即该XML文件的角色标签为学生),学生XML文件包括学生姓名、学生性别、学生年龄等标签。如“<people name=“Student”><attributename=“age”>19</attribute><attribute name=“gender”>男</attribute><attributename=“name”>张三</attribute></people>”。学生XML文件对应的学生实体类包括学生姓名、学生性别、学生年龄等属性。学生XML文件对应的学生实体类可以是“public classStudent{private String name;private String sex;private int age;}”。
生成模块202,用于生成所述实体类的属性注解。
属性子注解是一个Java类。所述计算机设备在运行过程中可以扫描到所述属性子注解(即所述属性子注解具有标记所述属性子注解对应的属性的作用),可以通过反射解析所述属性子注解对应的属性。
可以为需要解析的实体类生成属性注解。例如,三个实体类A、B、C,其中B不需要解析,则生成A和C的属性注解。
属性注解是对一个实体类的整体注解;属性子注解是对实体类的属性进行注解。所述属性注解包括多个属性子注解,所述实体类的每个属性对应一个属性子注解。
在一具体实施例中,所述生成所述实体类的属性注解包括:
生成所述属性子注解的定义代码,所述定义代码中的生命周期属性为运行期;
若所述定义代码中存在所述实体类的指定属性的默认值,将所述指定属性的默认值赋值给所述指定属性对应的指定属性子注解;
若所述定义代码中不存在所述实体类的指定属性的默认值,将所述指定属性的声明名赋值给所述指定属性子注解。
通过上述两种方式给所述指定属性子注解赋值,可以增加场景适应性。即当所述定义代码中存在所述实体类的指定属性的默认值时,能够生成所述实体类的属性注解;当所述定义代码中不存在所述实体类的指定属性的默认值时,也能够生成所述实体类的属性注解。可以根据解析需要或开发时效将所述实体类的指定属性的默认值加入所述定义代码。例如,当不能通过所述指定属性的声明名赋值给所述指定属性子注解,需要将所述实体类的指定属性的默认值加入所述定义代码。当能够通过所述指定属性的声明名赋值给所述指定属性子注解,且开发人员没有开发工时不足时,可以不用将所述实体类的指定属性的默认值加入所述定义代码。
在一具体实施例中,所述将所述指定属性的声明名赋值给所述指定属性子注解包括:
对所述指定属性的声明名进行格式转换,使格式转换后的声明名符合所述指定属性子注解的格式标准;
将所述格式转换后的声明名赋值给所述指定属性子注解。
例如,生成所述实体类的属性注解可以是“@XMLEntity public class Student{@XMLClosure(name="name")private String name;@XMLClosure(name="sex")privateString sex;@XMLClosure(name="age")private int age;}”。其中,@XMLEntity表示该类是作为XML对应的一个实体,可以用来接收解析之后的XML数据;@XMLClosure(name="age")表示要解析的xml中存在age标签,需要对其进行解析的标志。
属性注解是对一个实体类的整体注解,如上例中的@XMLEntity是用于注解实体类Student;属性子注解是对实体类Student的属性(如name、age等)进行注解。所述实体类的每个属性对应一个属性子注解,如三个属性name、age、sex分别对应一个属性子注解@XMLClosure。
存储模块203,用于根据所述属性注解将所述实体类的多个属性存储至第一键值映射表。
根据所述属性注解将所述实体类的多个属性的数据提取出,并存储至第一键值映射表。由于每个属性对应一个属性子注解,可以通过各个属性子注解准确地将各个属性的数据存储至所述第一第一键值映射表。
在一具体实施例中,所述根据所述属性注解将所述实体类的多个属性存储至第一键值映射表包括:
通过反射方法根据所述属性注解获取所述实体类的类名和所述实体类的多个属性;
将所述实体类的类名和所述实体类的多个属性存储至所述第一键值映射表的key值。
所述第一键值映射表可以是Map(Java中的结合对象)。通过反射方法获取的一个实体类的类名可以为Student,实体类的多个属性为name、age;将类名Student、属性name和属性age写到内存中的Map的key值。
第二获取模块204,用于根据所述第一键值映射表获取所述XML文件中的XML数据,得到存储所述XML数据的第二键值映射表。
所述第一键值映射表中存储待获取数据的key值,通过待获取数据的key值从所述XML文件中获取对应的数据,避免获取XML文件中的全部XML数据,增加解析效率。
在一具体实施例中,所述根据所述第一键值映射表获取所述XML文件中的XML数据包括:
将所述XML文件读取为文件对象;
根据所述第一键值映射表的key值确定所述文件对象的类节点和所述类节点的指定属性子节点;
在所述第一键值映射表中将所述指定属性子节点的值赋值给所述指定属性子节点对应的key值的value值。
例如,XML文件为“<people name=“Teacher”><attribute name=“age”>39</attribute><attribute name=“gender”>男</attribute><attribute name=“name”>李四</attribute></people><people name=“Student”><attribute name=“age”>19</attribute><attribute name=“gender”>男</attribute><attribute name=“name”>张三</attribute></people>”,其中,读取后的该文件对象的节点包括Student、Teacher,属性子节点包括name、age、gender。第一键值映射表的key值包括类名Student、属性name和属性age;将Student确定为该文件对象的类节点,将该文件对象的节点Student中的属性name和属性age确定为类节点Student的指定属性子节点。在第一键值映射表中将指定属性子节点的值(name=“张三”、age=“19”)赋值给指定属性子节点对应的key值对应的value值。
实体化模块205,用于将所述实体类实体化为类对象。
所述将所述实体类实体化为类对象的过程是根据抽象的实体类新建一个具体的类对象,且类对象具有实体类的属性。
赋值模块206,用于根据所述第二键值映射表将所述XML数据赋值给所述类对象。
在一具体实施例中,所述根据所述第二键值映射表将所述XML数据赋值给所述类对象包括:
依次获取所述第二键值映射表中的键值数据对;
将所述类对象中属性名与该键值数据对的key值一致的属性确定为目标属性;
将该键值数据对的value值赋值给所述目标属性。
例如,实体类为“@public class Student{private String name;private intage;}”,依次获取第二键值映射表中的键值数据对分别为name=“张三”、age=“19”,将该实体类的类对象中的“name”属性和“age”属性确定为目标属性,将“张三”赋值给目标属性“name”,将“19”赋值给目标属性“age”。
在一具体实施例中,所述将该键值数据对的value值赋值给所述目标属性包括:
判断所述实体类中是否存在set方法;
若所述实体类中存在set方法,通过set方法将该键值数据对的value值赋值给所述目标属性。
实施例二的XML文件解析装置20解析XML文件,能够提升解析XML文件的效率。传统的XML文件解析,必须参照XML标签及其属性逐一解析,工作量较大、任务较繁琐。本发明只需要生成所述实体类的属性注解;根据所述属性注解获取XML数据并将XML数据赋值给类对象。提升解析效率,从而提高了开发效率,节省了开发时间。
在另一实施例中,XML文件解析装置20还包括解析模块,用于将所述类对象解析为所述XML文件。
实施例三
本实施例提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述XML文件解析方法实施例中的步骤,例如图1所示的步骤101-106:
101,获取XML文件和所述XML文件对应的实体类;
102,生成所述实体类的属性注解;
103,根据所述属性注解将所述实体类的多个属性存储至第一键值映射表;
104,根据所述第一键值映射表获取所述XML文件中的XML数据,得到存储所述XML数据的第二键值映射表;
105,将所述实体类实体化为类对象;
106,根据所述第二键值映射表将所述XML数据赋值给所述类对象。
或者,该计算机程序被处理器执行时实现上述装置实施例中各模块的功能,例如图2中的模块201-206:
第一获取模块201,用于获取XML文件和所述XML文件对应的实体类;
生成模块202,用于生成所述实体类的属性注解;
存储模块203,用于根据所述属性注解将所述实体类的多个属性存储至第一键值映射表;
第二获取模块204,用于根据所述第一键值映射表获取所述XML文件中的XML数据,得到存储所述XML数据的第二键值映射表;
实体化模块205,用于将所述实体类实体化为类对象;
赋值模块206,用于根据所述第二键值映射表将所述XML数据赋值给所述类对象。
实施例四
图3为本发明实施例三提供的计算机设备的示意图。所述计算机设备30包括存储器301、处理器302以及存储在所述存储器301中并可在所述处理器302上运行的计算机程序303,例如XML文件解析程序。所述处理器302执行所述计算机程序303时实现上述XML文件解析方法实施例中的步骤,例如图1所示的101-106:
101,获取XML文件和所述XML文件对应的实体类;
102,生成所述实体类的属性注解;
103,根据所述属性注解将所述实体类的多个属性存储至第一键值映射表;
104,根据所述第一键值映射表获取所述XML文件中的XML数据,得到存储所述XML数据的第二键值映射表;
105,将所述实体类实体化为类对象;
106,根据所述第二键值映射表将所述XML数据赋值给所述类对象。
或者,该计算机程序被处理器执行时实现上述装置实施例中各模块的功能,例如图2中的模块201-206:
第一获取模块201,用于获取XML文件和所述XML文件对应的实体类;
生成模块202,用于生成所述实体类的属性注解;
存储模块203,用于根据所述属性注解将所述实体类的多个属性存储至第一键值映射表;
第二获取模块204,用于根据所述第一键值映射表获取所述XML文件中的XML数据,得到存储所述XML数据的第二键值映射表;
实体化模块205,用于将所述实体类实体化为类对象;
赋值模块206,用于根据所述第二键值映射表将所述XML数据赋值给所述类对象。
示例性的,所述计算机程序303可以被分割成一个或多个模块,所述一个或者多个模块被存储在所述存储器301中,并由所述处理器302执行,以完成本方法。所述一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序303在所述计算机设备30中的执行过程。例如,所述计算机程序303可以被分割成图2中的第一获取模块201、生成模块202、存储模块203、第二获取模块204、实体化模块205、赋值模块206,各模块具体功能参见实施例二。
本领域技术人员可以理解,所述示意图3仅仅是计算机设备30的示例,并不构成对计算机设备30的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机设备30还可以包括输入输出设备、网络接入设备、总线等。
所称处理器302可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器302也可以是任何常规的处理器等,所述处理器302是所述计算机设备30的控制中心,利用各种接口和线路连接整个计算机设备30的各个部分。
所述存储器301可用于存储所述计算机程序303,所述处理器302通过运行或执行存储在所述存储器301内的计算机程序或模块,以及调用存储在存储器301内的数据,实现所述计算机设备30的各种功能。所述存储器301可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备30的使用所创建的数据等。此外,存储器301可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。
所述计算机设备30集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述文件解析方法的部分步骤。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他模块或步骤,单数不排除复数。系统权利要求中陈述的多个模块或装置也可以由一个模块或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
Claims (10)
1.一种XML文件解析方法,其特征在于,所述文件解析方法包括:
获取XML文件和所述XML文件对应的实体类;
生成所述实体类的属性注解;
根据所述属性注解将所述实体类的多个属性存储至第一键值映射表;
根据所述第一键值映射表获取所述XML文件中的XML数据,得到存储所述XML数据的第二键值映射表;
将所述实体类实体化为类对象;
根据所述第二键值映射表将所述XML数据赋值给所述类对象。
2.如权利要求1所述的XML文件解析方法,其特征在于,所述生成所述实体类的属性注解包括:
生成所述属性子注解的定义代码,所述定义代码中的生命周期属性为运行期;
若所述定义代码中存在所述实体类的指定属性的默认值,将所述指定属性的默认值赋值给所述指定属性对应的指定属性子注解;
若所述定义代码中不存在所述实体类的指定属性的默认值,将所述指定属性的声明名赋值给所述指定属性子注解。
3.如权利要求1所述的XML文件解析方法,其特征在于,所述将所述指定属性的声明名赋值给所述指定属性子注解包括:
对所述指定属性的声明名进行格式转换,使格式转换后的声明名符合所述指定属性子注解的格式标准;
将所述格式转换后的声明名赋值给所述指定属性子注解。
4.如权利要求1所述的XML文件解析方法,其特征在于,所述根据所述属性注解将所述实体类的多个属性存储至第一键值映射表包括:
通过反射方法根据所述属性注解获取所述实体类的类名和所述实体类的多个属性;
将所述实体类的类名和所述实体类的多个属性存储至所述第一键值映射表的key值。
5.如权利要求1所述的XML文件解析方法,其特征在于,所述根据所述第一键值映射表获取所述XML文件中的XML数据包括:
将所述XML文件读取为文件对象;
根据所述第一键值映射表的key值确定所述文件对象的类节点和所述类节点的指定属性子节点;
在所述第一键值映射表中将所述指定属性子节点的值赋值给所述指定属性子节点对应的key值的value值。
6.如权利要求1所述的XML文件解析方法,其特征在于,所述根据所述第二键值映射表将所述XML数据赋值给所述类对象包括:
依次获取所述第二键值映射表中的键值数据对;
将所述类对象中属性名与该键值数据对的key值一致的属性确定为目标属性;
将该键值数据对的value值赋值给所述目标属性。
7.如权利要求6所述的XML文件解析方法,其特征在于,所述将该键值数据对的value值赋值给所述目标属性包括:
判断所述实体类中是否存在set方法;
若所述实体类中存在set方法,通过set方法将该键值数据对的value值赋值给所述目标属性。
8.一种XML文件解析装置,其特征在于,所述文件解析装置包括:
第一获取模块,用于获取XML文件和所述XML文件对应的实体类;
生成模块,用于生成所述实体类的属性注解;
存储模块,用于根据所述属性注解将所述实体类的多个属性存储至第一键值映射表;
第二获取模块,用于根据所述第一键值映射表获取所述XML文件中的XML数据,得到存储所述XML数据的第二键值映射表;
实体化模块,用于将所述实体类实体化为类对象;
赋值模块,用于根据所述第二键值映射表将所述XML数据赋值给所述类对象。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器,所述处理器用于执行存储器中存储的计算机程序以实现如权利要求1至7中任一项所述XML文件解析方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述XML文件解析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010585042.1A CN111753140A (zh) | 2020-06-23 | 2020-06-23 | Xml文件解析方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010585042.1A CN111753140A (zh) | 2020-06-23 | 2020-06-23 | Xml文件解析方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111753140A true CN111753140A (zh) | 2020-10-09 |
Family
ID=72676949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010585042.1A Pending CN111753140A (zh) | 2020-06-23 | 2020-06-23 | Xml文件解析方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111753140A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112612794A (zh) * | 2020-12-29 | 2021-04-06 | 北京锐安科技有限公司 | 一种关系型数据库的辅助生成方法、装置、计算机设备及存储介质 |
CN113296832A (zh) * | 2021-05-31 | 2021-08-24 | 广州探途网络技术有限公司 | 数据处理方法、装置和电子设备 |
CN113986346A (zh) * | 2021-11-26 | 2022-01-28 | 中国银行股份有限公司 | Dubbo接口实现类的分析方法及装置 |
WO2023103339A1 (zh) * | 2021-12-09 | 2023-06-15 | 深圳前海微众银行股份有限公司 | 一种数据转换方法及装置 |
-
2020
- 2020-06-23 CN CN202010585042.1A patent/CN111753140A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112612794A (zh) * | 2020-12-29 | 2021-04-06 | 北京锐安科技有限公司 | 一种关系型数据库的辅助生成方法、装置、计算机设备及存储介质 |
CN113296832A (zh) * | 2021-05-31 | 2021-08-24 | 广州探途网络技术有限公司 | 数据处理方法、装置和电子设备 |
CN113986346A (zh) * | 2021-11-26 | 2022-01-28 | 中国银行股份有限公司 | Dubbo接口实现类的分析方法及装置 |
WO2023103339A1 (zh) * | 2021-12-09 | 2023-06-15 | 深圳前海微众银行股份有限公司 | 一种数据转换方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111753140A (zh) | Xml文件解析方法及相关设备 | |
CN111813963B (zh) | 知识图谱构建方法、装置、电子设备及存储介质 | |
WO2022218186A1 (zh) | 个性化知识图谱的生成方法、装置及计算机设备 | |
Merle et al. | A precise metamodel for open cloud computing interface | |
US11380116B2 (en) | Automatic delineation and extraction of tabular data using machine learning | |
US20090254881A1 (en) | Code generation techniques for administrative tasks | |
CN108595171B (zh) | 对象的模型生成方法、装置、设备及存储介质 | |
JP2006107436A5 (zh) | ||
US9141344B2 (en) | Hover help support for application source code | |
CN111656453B (zh) | 用于信息提取的层次实体识别和语义建模框架 | |
CN112148356A (zh) | 文档生成方法、接口开发方法、装置、服务器及存储介质 | |
CN110175022B (zh) | 自动生成pojo类的方法、装置及存储介质、计算机设备 | |
CN115048111B (zh) | 基于元数据的代码生成方法、装置、设备及介质 | |
CN110851136A (zh) | 数据获取方法、装置、电子设备及存储介质 | |
CN114020256A (zh) | 前端页面生成方法、装置、设备及可读存储介质 | |
CN113032393A (zh) | 一种绑定关联对象的方法和装置 | |
WO2022105478A1 (zh) | 在线预览excel文件方法、装置、电子设备及存储介质 | |
JP2006216027A (ja) | 同じアイテムを表すデータ構造間で生データを転送するメカニズム | |
CN114168149A (zh) | 一种数据转换方法及装置 | |
CN110633258B (zh) | 日志插入方法、装置、计算机装置及存储介质 | |
JP2004342107A (ja) | オブジェクト指向パイプラインを用いるシステム及び方法 | |
CN115129753A (zh) | 数据血缘关系分析方法、装置、电子设备及存储介质 | |
CN113094776B (zh) | 可视化组件模型数据构建的方法、系统及电子设备 | |
CN117667095A (zh) | 一种页面代码导出方法、装置、设备和存储介质 | |
CN115629763A (zh) | 目标代码的生成方法、npu指令的显示方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |