CN107239492A - Xml文档转换为对象、对象转换为xml文档的方法及装置 - Google Patents
Xml文档转换为对象、对象转换为xml文档的方法及装置 Download PDFInfo
- Publication number
- CN107239492A CN107239492A CN201710279795.8A CN201710279795A CN107239492A CN 107239492 A CN107239492 A CN 107239492A CN 201710279795 A CN201710279795 A CN 201710279795A CN 107239492 A CN107239492 A CN 107239492A
- Authority
- CN
- China
- Prior art keywords
- class
- node
- xml document
- attribute
- converted
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Document Processing Apparatus (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种XML文档转换为对象、对象转换为XML文档的方法及装置,该XML文档转换为对象的方法包括:获取待解析的XML文档,并获取一指定的class类型;根据所述指定的class类型,反射创建类;解析所述XML文档,得到所述XML文档中的根节点;根据所述根节点下的节点的信息向创建出的类进行赋值,以得到class对象。本发明的技术方案避免了编程人员需要手动书写转换方法的繁琐操作,进而使得编程人员无需关心如何进行数据转换,减轻了编程人员的代码开发压力,有利于提高产品的开发效率。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种XML文档转换为对象、对象转换为XML文档的方法及装置。
背景技术
随着web开发的日益流行,数据交互也越发的重要。无论是前端和后端之间的交互,还是客户端和服务器之间的交互,异或是不同服务器之间的交互都体现了数据的交互。
而网络的本质就是一个数据之间互相传递、互相修改、互相影响的拓扑结构。为了解决数据之间的传递问题,国际之间渐渐形成了两种规范:一种是基于特殊符号的传递方式,如JSON(JavaScript Object Notation,一种轻量级的数据交换格式);另一种是基于一定格式的传递方式,如XML(Extensible Markup Language,扩展标记语言)。JSON现在依然只是在web端比较流行,而XML 却一直占据巨大的数据交互的份额。
但是,目前却没有提供XML和java对象之间转化的方法,于是需要程序员自己根据当前的业务来书写相应的转换方法,,但是较低的使用范围和重复利用率,成为了数据交互这上面的一个比较尴尬的问题。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明的目的在于提供一种XML文档转换为对象及对象转换为XML文档的方案,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本发明的一个方面,提供了一种XML文档转换为对象的方法,包括以下步骤:获取待解析的XML文档,并获取一指定的class类型;根据所述指定的class类型,反射创建类;解析所述XML文档,得到所述XML文档中的根节点;根据所述根节点下的节点的信息向创建出的类进行赋值,以得到class 对象。
在本发明的一些实施例中,基于前述方案,根据所述根节点下的节点的信息向创建出的类进行赋值的步骤,包括:对于所述根节点下的任一节点,判断所述任一节点是否具有下级节点;若所述任一节点不具有下级节点,则获取所述任一节点的名称和内容;根据所述任一节点的名称和内容向创建出的类进行赋值,得到一class对象。
在本发明的一些实施例中,基于前述方案,还包括:若所述任一节点具有下级节点,则根据所述任一节点的属性确定创建出的类是否是与所述任一节点对应的类;在创建出的类是与所述任一节点对应的类时,根据所述任一节点的名称和内容向创建出的类进行赋值,得到一class对象。
在本发明的一些实施例中,基于前述方案,还包括:在根据任一节点的名称和内容向创建出的类进行赋值得到一class对象时,判断创建出的类中是否有对应于所述任一节点的属性;若创建出的类中有对应于所述任一节点的属性,则根据所述任一节点的内容,向得到的class对象的属性进行赋值。
在本发明的一些实施例中,基于前述方案,根据所述任一节点的内容,向得到的class对象的属性进行赋值的步骤,包括:判断所述任一节点中是否存在 set方法;若所述任一节点中存在set方法,则通过set方法将所述任一节点的内容赋值给得到的class对象的属性;若所述任一节点中不存在set方法,则修改得到的class对象的属性状态,并通过所述任一节点的内容直接向得到的class 对象的属性进行赋值。
在本发明的一些实施例中,基于前述方案,还包括:判断创建出的类中是否有自定义注解;若创建出的类中有自定义注解,则获取所有自定义注解的属性;在所述所有自定义注解的属性中,判断创建出的类中是否有对应于所述任一节点的属性。
根据本发明的第二方面,还提供了一种对象转换为XML文档的方法,包括以下步骤:获取一待转换的对象;判断所述对象的类中是否存在注解;将所述对象的类的类名作为XML文档的根节点的名称,并根据所述对象的类中是否存在注解来生成所述根节点的子节点;基于所述根节点和所述根节点的子节点,生成XML文档。
在本发明的一些实施例中,基于前述方案,根据所述对象的类中是否存在注解来生成所述根节点的子节点的步骤,包括:若所述对象的类中存在注解,则获取所有被注解的属性;根据所有被注解的属性的名称和值,生成所述根节点的子节点。
在本发明的一些实施例中,基于前述方案,根据所述对象的类中是否存在注解来生成所述根节点的子节点的步骤,包括:若所述对象的类中不存在注解,则获取所述对象的属性;根据所述属性的类型,生成所述根节点的子节点。
在本发明的一些实施例中,基于前述方案,根据所述属性的类型,生成所述根节点的子节点的步骤,包括:若所述属性的类型为基本数据类型或String 类型,则将所述属性的名称和值分别作为子节点的名称和内容,以生成所述根节点的子节点。
在本发明的一些实施例中,基于前述方案,根据所述属性的类型,生成所述根节点的子节点的步骤,包括:若所述属性的类型为数组类型,则将数组的名称作为子节点的名称生成所述根节点的子节点,并将所述数组中的每个数作为生成的子节点的一个下级节点。
在本发明的一些实施例中,基于前述方案,根据所述属性的类型,生成所述根节点的子节点的步骤,包括:若所述属性的类型为类,则将类的名称作为子节点的名称生成所述根节点的一个子节点,并根据类中是否存在注解来生成所述一个子节点的下级节点。
根据本发明的第三方面,还提供了一种XML文档转换为对象的装置,包括:获取单元,用于获取待解析的XML文档,并获取一指定的class类型;创建单元,用于根据所述指定的class类型,反射创建类;解析单元,用于解析所述XML文档,得到所述XML文档中的根节点;处理单元,用于根据所述根节点下的节点的信息向创建出的类进行赋值,以得到class对象。
在本发明的一些实施例中,基于前述方案,所述处理单元配置为:对于所述根节点下的任一节点,判断所述任一节点是否具有下级节点;若所述任一节点不具有下级节点,则获取所述任一节点的名称和内容;根据所述任一节点的名称和内容向创建出的类进行赋值,得到一class对象。
在本发明的一些实施例中,基于前述方案,所述处理单元配置为:若所述任一节点具有下级节点,则根据所述任一节点的属性确定创建出的类是否是与所述任一节点对应的类;在创建出的类是与所述任一节点对应的类时,根据所述任一节点的名称和内容向创建出的类进行赋值,得到一class对象。
在本发明的一些实施例中,基于前述方案,所述处理单元还用于:在根据任一节点的名称和内容向创建出的类进行赋值得到一class对象时,判断创建出的类中是否有对应于所述任一节点的属性;若创建出的类中有对应于所述任一节点的属性,则根据所述任一节点的内容,向得到的class对象的属性进行赋值。
在本发明的一些实施例中,基于前述方案,根据所述任一节点的内容,向得到的class对象的属性进行赋值包括:判断所述任一节点中是否存在set方法;若所述任一节点中存在set方法,则通过set方法将所述任一节点的内容赋值给得到的class对象的属性;若所述任一节点中不存在set方法,则修改得到的class 对象的属性状态,并通过所述任一节点的内容直接向得到的class对象的属性进行赋值。
在本发明的一些实施例中,基于前述方案,所述处理单元配置为:判断创建出的类中是否有自定义注解;若创建出的类中有自定义注解,则获取所有自定义注解的属性;在所述所有自定义注解的属性中,判断创建出的类中是否有对应于所述任一节点的属性。
根据本发明的第四方面,还提供了一种对象转换为XML文档的装置,包括:获取单元,用于获取一待转换的对象;判断单元,用于判断所述对象的类中是否存在注解;处理单元,用于将所述对象的类的类名作为XML文档的根节点的名称,并根据所述对象的类中是否存在注解来生成所述根节点的子节点;生成单元,用于基于所述根节点和所述根节点的子节点,生成XML文档。
在本发明的一些实施例中,基于前述方案,所述处理单元配置为:若所述对象的类中存在注解,则获取所有被注解的属性;根据所有被注解的属性的名称和值,生成所述根节点的子节点。
在本发明的一些实施例中,基于前述方案,所述处理单元配置为:若所述对象的类中不存在注解,则获取所述对象的属性;根据所述属性的类型,生成所述根节点的子节点。
在本发明的一些实施例中,基于前述方案,所述处理单元配置为:若所述属性的类型为基本数据类型或String类型,则将所述属性的名称和值分别作为子节点的名称和内容,以生成所述根节点的子节点。
在本发明的一些实施例中,基于前述方案,所述处理单元配置为:若所述属性的类型为数组类型,则将数组的名称作为子节点的名称生成所述根节点的子节点,并将所述数组中的每个数作为生成的子节点的一个下级节点。
在本发明的一些实施例中,基于前述方案,所述处理单元配置为:若所述属性的类型为类,则将类的名称作为子节点的名称生成所述根节点的一个子节点,并根据类中是否存在注解来生成所述一个子节点的下级节点。
在本发明的一些实施例所提供的技术方案中,通过提供XML文档与对象之间的转换方案,避免了编程人员需要手动书写转换方法的繁琐操作,进而使得编程人员无需关心如何进行数据转换,减轻了编程人员的代码开发压力,有利于提高产品的开发效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示意性示出了根据本发明的第一个实施例的XML文档转换为对象的方法的流程图;
图2示意性示出了根据本发明的实施例的XML文档转换为对象的流程图;
图3示意性示出了根据本发明的第二个实施例的XML文档转换为对象的方法的流程图;
图4示意性示出了根据本发明的实施例的XML文档转换为对象的装置的框图;
图5示意性示出了根据本发明的第一个实施例的对象转换为XML文档的方法的流程图;
图6示意性示出了根据本发明的实施例的对象转换为XML文档的流程图;
图7示意性示出了根据本发明的第二个实施例的对象转换为XML文档的方法的流程图;
图8示意性示出了根据本发明的实施例的对象转换为XML文档的装置的框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/ 步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示意性示出了根据本发明的第一个实施例的XML文档转换为对象的方法的流程图。
参照图1,根据本发明的第一个实施例的XML文档转换为对象的方法,包括以下步骤:
步骤S10,获取待解析的XML文档,并获取一指定的class类型。
在该实施例中,指定的class类型即为需要将XML文档进行转换得到的对象对应的class类型。
步骤S12,根据所述指定的class类型,反射创建类。
步骤S14,解析所述XML文档,得到所述XML文档中的根节点。
根据本发明的示例性实施例,可以通过dom4j(是一个开源的XML解析包) 工具解析所述XML文档,得到所述XML文档中的根节点。
步骤S16,根据所述根节点下的节点的信息向创建出的类进行赋值,以得到class对象。
根据本发明的示例性实施例,步骤S16包括:对于所述根节点下的任一节点,判断所述任一节点是否具有下级节点;若所述任一节点不具有下级节点,则获取所述任一节点的名称和内容;根据所述任一节点的名称和内容向创建出的类进行赋值,得到一class对象。
在该实施例中,根节点下的任一节点包括:根节点的子节点,以及根节点的子节点下面的节点。
根据本发明的示例性实施例,步骤S16还包括:若所述任一节点具有下级节点,则根据所述任一节点的属性确定创建出的类是否是与所述任一节点对应的类;在创建出的类是与所述任一节点对应的类时,根据所述任一节点的名称和内容向创建出的类进行赋值,得到一class对象。
此外,若创建出的类不是与任一节点对应的类,则不进行赋值操作。
在创建出class对象之后,本发明的实施例还提出了对class对象的属性进行赋值的方案,具体如下:
根据本发明的示例性实施例,在根据任一节点的名称和内容向创建出的类进行赋值得到一class对象时,判断创建出的类中是否有对应于所述任一节点的属性;若创建出的类中有对应于所述任一节点的属性,则根据所述任一节点的内容,向得到的class对象的属性进行赋值。
根据本发明的示例性实施例,根据所述任一节点的内容,向得到的class对象的属性进行赋值的步骤包括:判断所述任一节点中是否存在set方法;若所述任一节点中存在set方法,则通过set方法将所述任一节点的内容赋值给得到的 class对象的属性;若所述任一节点中不存在set方法,则修改得到的class对象的属性状态,并通过所述任一节点的内容直接向得到的class对象的属性进行赋值。
根据本发明的示例性实施例,还包括:判断创建出的类中是否有自定义注解;若创建出的类中有自定义注解,则获取所有自定义注解的属性;在所述所有自定义注解的属性中,判断创建出的类中是否有对应于所述任一节点的属性。
综上,如图2所示,本发明实施例的方案可以自动对XML文档进行解析并转换为对象,极大地减轻了编程人员的代码开发压力。
具体地,当需要强XML解析为java对象时,会根据XML和给定的类,反射创建该类。然后根据获取到的XML节点的信息,层层赋值给反射创建的类,保证数据安全。此外,如果有某些节点的数据无法赋值给对象的属性,可以提供异常信息的提醒和/或打印,确保程序的正常运行。
图3示意性示出了根据本发明的第二个实施例的XML文档转换为对象的方法的流程图。
参照图3,根据本发明的第二个实施例的XML文档转换为对象的方法,包括以下步骤:
步骤S302,获得XML文档和class类型。此处的class类型即为指定的class 类型。
步骤S304,使用dom4j解析XML文档,获得顶端元素。其中,顶端元素即为XML文档中的根节点。
步骤S306,从顶端元素中获得子节点。
步骤S308,判断子节点之后是否无子节点,若无子节点,则执行步骤S310;若有子节点,则执行步骤S320。
步骤S310,从该节点中获得节点的名称和内容,然后执行对象创建流程,并执行步骤S312。
步骤S312,根据节点名称查找该类中有无相应的属性,若有,则执行步骤 S314;若无,则执行步骤S306,以遍历顶端元素的其它子节点。
其中,步骤S312具体可以是在类中有自定义注解时,遍历获得所有注解属性,并存储在一个Map(其储存了成对的键-值对象,提供key(键)到value (值)的映射),能够实现根据key快速查找value)中,然后从注解Map中查找有无相应属性。
步骤S314,判断该节点中是否有set方法,若是,则执行步骤S316;否则,执行步骤S318。
步骤S316,将节点的内容通过set方法注入对象中,然后执行步骤S306,以遍历顶端元素的其它子节点。
步骤S318,修改属性的状态,对该属性直接赋值,然后执行步骤S306,以遍历顶端元素的其它子节点。
步骤S320,判断该节点属性在class中是否为一个类,若是,则执行对象创建流程;否则,执行步骤S322。
步骤S322,获得该节点的子节点,然后执行步骤S308。
在图3所示的方法中,对象创建流程具体为:判断对象是否创建,若未创建,则反射获得需要创建的class对象;若已创建,则找到创建的对象。
图4示意性示出了根据本发明的实施例的XML文档转换为对象的装置的框图。
如图4所示,根据本发明的实施例的XML文档转换为对象的装置400,包括:获取单元402、创建单元404、解析单元406和处理单元408。
具体地,获取单元402用于获取待解析的XML文档,并获取一指定的class 类型;创建单元404用于根据所述指定的class类型,反射创建类;解析单元 406用于解析所述XML文档,得到所述XML文档中的根节点;处理单元408 用于根据所述根节点下的节点的信息向创建出的类进行赋值,以得到class对象。
在本发明的一些实施例中,基于前述方案,所述处理单元408配置为:对于所述根节点下的任一节点,判断所述任一节点是否具有下级节点;若所述任一节点不具有下级节点,则获取所述任一节点的名称和内容;根据所述任一节点的名称和内容向创建出的类进行赋值,得到一class对象。
在本发明的一些实施例中,基于前述方案,所述处理单元408配置为:若所述任一节点具有下级节点,则根据所述任一节点的属性确定创建出的类是否是与所述任一节点对应的类;在创建出的类是与所述任一节点对应的类时,根据所述任一节点的名称和内容向创建出的类进行赋值,得到一class对象。
在本发明的一些实施例中,基于前述方案,所述处理单元408还用于:在根据任一节点的名称和内容向创建出的类进行赋值得到一class对象时,判断创建出的类中是否有对应于所述任一节点的属性;若创建出的类中有对应于所述任一节点的属性,则根据所述任一节点的内容,向得到的class对象的属性进行赋值。
在本发明的一些实施例中,基于前述方案,根据所述任一节点的内容,向得到的class对象的属性进行赋值包括:判断所述任一节点中是否存在set方法;若所述任一节点中存在set方法,则通过set方法将所述任一节点的内容赋值给得到的class对象的属性;若所述任一节点中不存在set方法,则修改得到的class 对象的属性状态,并通过所述任一节点的内容直接向得到的class对象的属性进行赋值。
在本发明的一些实施例中,基于前述方案,所述处理单元408配置为:判断创建出的类中是否有自定义注解;若创建出的类中有自定义注解,则获取所有自定义注解的属性;在所述所有自定义注解的属性中,判断创建出的类中是否有对应于所述任一节点的属性。
本发明上述实施例提供的XML文档转对象的方案可以避免某些XML转对象的工具在解析和转化的过程中导致不断启动classLoader加载重新生成的类的字节码,而造成内存占用过高,导致内存溢出的事故。
图5示意性示出了根据本发明的第一个实施例的对象转换为XML文档的方法的流程图。
如图5所示,根据本发明的第一个实施例的对象转换为XML文档的方法,包括以下步骤:
步骤S502,获取一待转换的对象。其中,待转换的对象可以是java对象。
步骤S504,判断所述对象的类中是否存在注解。
在本发明的实施例中,注解(Annotation)也叫元数据,是一种代码级别的说明。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
通常情况下,注解主要有如下作用:
①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】;
②代码分析:通过代码里标识的元数据对代码进行分析【使用反射】;
③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查。
步骤S506,将所述对象的类的类名作为XML文档的根节点的名称,并根据所述对象的类中是否存在注解来生成所述根节点的子节点。
根据本发明的示例性实施例,步骤S506中根据所述对象的类中是否存在注解来生成所述根节点的子节点的步骤,包括:若所述对象的类中存在注解,则获取所有被注解的属性;根据所有被注解的属性的名称和值,生成所述根节点的子节点。
在本发明的一些实施例中,基于前述方案,根据所述对象的类中是否存在注解来生成所述根节点的子节点的步骤包括:若所述对象的类中不存在注解,则获取所述对象的属性;根据所述属性的类型,生成所述根节点的子节点。
对于不同属性的类型,生成根节点的子节点的方法也不同,具体如下:
1、若所述属性的类型为基本数据类型或String类型,则将所述属性的名称和值分别作为子节点的名称和内容,以生成所述根节点的子节点。
2、若所述属性的类型为数组类型,则将数组的名称作为子节点的名称生成根节点的子节点,并将所述数组中的每个数作为生成的子节点的一个下级节点。
3、若所述属性的类型为类,则将类的名称作为子节点的名称生成所述根节点的一个子节点,并根据类中是否存在注解来生成所述一个子节点的下级节点。
对于属性的类型为类的情况(即上述3中的情况),同样可以采用上述的方法来根据类中是否存在注解来生成根节点的子节点的下级节点。
步骤S508,基于所述根节点和所述根节点的子节点,生成XML文档。
综上,如图6所示,本发明实施例的方案可以自动对对象进行解析并转换为XML文档,极大地减轻了编程人员的代码开发压力。
具体地,当需要将对象转换为XML时,会获取对象的注解信息,如相关的namespace(即“命名空间”,其作用是用来组织和重用代码的)、XSL (eXtensible StylesheetLanguage,可扩展样式表语言)等。在创建DOM (Document Object Model,文档对象模型)树之后将DOM树的根节点名称赋值。接着判断属性类型,如果属性类型为基本类型,或者为String类型,会将 dom中增加一个子节点;如果是属性为类,会继续执行将对象转换为xml的操作,通过递归算法,保证逻辑安全。最终将整个DOM树转化为字符串,该字符串的内容即转化之后的XML文档。
具体地,如图7所示,根据本发明的第二个实施例的对象转换为XML文档的方法,包括以下步骤:
步骤S702,获得对象信息。
步骤S704,判断该对象类是否存在注解,若是,则执行步骤S706;否则,执行步骤S710。
步骤S706,查找注解,获得类名和所有被注解的属性。其中,根据类名生成XML的根节点。
步骤S708,将注解的属性名作为XML的节点,通过对象的get方法,或直接属性得到对象的属性值,作为节点的内容,并循环获得所有节点,然后根据所有节点生成最终的XML文档。
步骤S710,获取对象的属性。
步骤S712,根据属性的类型,获得所有节点,然后根据所有节点生成最终的XML文档。
具体地,若属性的类型为基本数据类型或String类型,则将属性的名称和值分别作为子节点的名称和内容,以生成根节点的子节点;若属性的类型为数组类型,则将数组的名称作为子节点的名称生成根节点的子节点,并将数组中的每个数作为生成的子节点的一个下级节点;若属性的类型为类,则将类的名称作为子节点的名称生成根节点的一个子节点,并根据类中是否存在注解来生成这个子节点的下级节点。
图8示意性示出了根据本发明的实施例的对象转换为XML文档的装置的框图。
如图8所示,根据本发明的实施例的对象转换为XML文档的装置800,包括:获取单元802、判断单元804、处理单元806和生成单元808。
具体地,获取单元802用于获取一待转换的对象;判断单元804用于判断所述对象的类中是否存在注解;处理单元806用于将所述对象的类的类名作为 XML文档的根节点的名称,并根据所述对象的类中是否存在注解来生成所述根节点的子节点;生成单元808用于基于所述根节点和所述根节点的子节点,生成XML文档。
在本发明的一些实施例中,基于前述方案,所述处理单元806配置为:若所述对象的类中存在注解,则获取所有被注解的属性;根据所有被注解的属性的名称和值,生成所述根节点的子节点。
在本发明的一些实施例中,基于前述方案,所述处理单元806配置为:若所述对象的类中不存在注解,则获取所述对象的属性;根据所述属性的类型,生成所述根节点的子节点。
在本发明的一些实施例中,基于前述方案,所述处理单元806配置为:若所述属性的类型为基本数据类型或String类型,则将所述属性的名称和值分别作为子节点的名称和内容,以生成所述根节点的子节点。
在本发明的一些实施例中,基于前述方案,所述处理单元806配置为:若所述属性的类型为数组类型,则将数组的名称作为子节点的名称生成所述根节点的子节点,并将所述数组中的每个数作为生成的子节点的一个下级节点。
在本发明的一些实施例中,基于前述方案,所述处理单元806配置为:若所述属性的类型为类,则将类的名称作为子节点的名称生成所述根节点的一个子节点,并根据类中是否存在注解来生成所述一个子节点的下级节点。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (11)
1.一种XML文档转换为对象的方法,包括以下步骤:
获取待解析的XML文档,并获取一指定的class类型;
根据所述指定的class类型,反射创建类;
解析所述XML文档,得到所述XML文档中的根节点;
根据所述根节点下的节点的信息向创建出的类进行赋值,以得到class对象。
2.如权利要求1所述的XML文档转换为对象的方法,其中,根据所述根节点下的节点的信息向创建出的类进行赋值的步骤,包括:
对于所述根节点下的任一节点,判断所述任一节点是否具有下级节点;
若所述任一节点不具有下级节点,则获取所述任一节点的名称和内容;
根据所述任一节点的名称和内容向创建出的类进行赋值,得到一class对象。
3.如权利要求2所述的XML文档转换为对象的方法,还包括:
若所述任一节点具有下级节点,则根据所述任一节点的属性确定创建出的类是否是与所述任一节点对应的类;
在创建出的类是与所述任一节点对应的类时,根据所述任一节点的名称和内容向创建出的类进行赋值,得到一class对象。
4.如权利要求3或2所述的XML文档转换为对象的方法,还包括:
在根据任一节点的名称和内容向创建出的类进行赋值得到一class对象时,判断创建出的类中是否有对应于所述任一节点的属性;
若创建出的类中有对应于所述任一节点的属性,则根据所述任一节点的内容,向得到的class对象的属性进行赋值。
5.如权利要求4所述的XML文档转换为对象的方法,根据所述任一节点的内容,向得到的class对象的属性进行赋值的步骤,包括:
判断所述任一节点中是否存在set方法;
若所述任一节点中存在set方法,则通过set方法将所述任一节点的内容赋值给得到的class对象的属性;
若所述任一节点中不存在set方法,则修改得到的class对象的属性状态,并通过所述任一节点的内容直接向得到的class对象的属性进行赋值。
6.如权利要求4所述的XML文档转换为对象的方法,还包括:
判断创建出的类中是否有自定义注解;
若创建出的类中有自定义注解,则获取所有自定义注解的属性;
在所述所有自定义注解的属性中,判断创建出的类中是否有对应于所述任一节点的属性。
7.一种对象转换为XML文档的方法,包括以下步骤:
获取一待转换的对象;
判断所述对象的类中是否存在注解;
将所述对象的类的类名作为XML文档的根节点的名称,并根据所述对象的类中是否存在注解来生成所述根节点的子节点;
基于所述根节点和所述根节点的子节点,生成XML文档。
8.如权利要求7所述的对象转换为XML文档的方法,根据所述对象的类中是否存在注解来生成所述根节点的子节点的步骤,包括:
若所述对象的类中存在注解,则获取所有被注解的属性;
根据所有被注解的属性的名称和值,生成所述根节点的子节点。
9.如权利要求7或8所述的对象转换为XML文档的方法,根据所述对象的类中是否存在注解来生成所述根节点的子节点的步骤,包括:
若所述对象的类中不存在注解,则获取所述对象的属性;
根据所述属性的类型,生成所述根节点的子节点。
10.一种XML文档转换为对象的装置,包括:
获取单元,用于获取待解析的XML文档,并获取一指定的class类型;
创建单元,用于根据所述指定的class类型,反射创建类;
解析单元,用于解析所述XML文档,得到所述XML文档中的根节点;
处理单元,用于根据所述根节点下的节点的信息向创建出的类进行赋值,以得到class对象。
11.一种对象转换为XML文档的装置,包括:
获取单元,用于获取一待转换的对象;
判断单元,用于判断所述对象的类中是否存在注解;
处理单元,用于将所述对象的类的类名作为XML文档的根节点的名称,
并根据所述对象的类中是否存在注解来生成所述根节点的子节点;
生成单元,用于基于所述根节点和所述根节点的子节点,生成XML文档。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710279795.8A CN107239492A (zh) | 2017-04-25 | 2017-04-25 | Xml文档转换为对象、对象转换为xml文档的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710279795.8A CN107239492A (zh) | 2017-04-25 | 2017-04-25 | Xml文档转换为对象、对象转换为xml文档的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107239492A true CN107239492A (zh) | 2017-10-10 |
Family
ID=59985434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710279795.8A Pending CN107239492A (zh) | 2017-04-25 | 2017-04-25 | Xml文档转换为对象、对象转换为xml文档的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107239492A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595164A (zh) * | 2018-04-08 | 2018-09-28 | 浙江网盛数新软件股份有限公司 | 一种数据格式与Java对象的转换方法 |
CN109670053A (zh) * | 2018-12-25 | 2019-04-23 | 北京锐安科技有限公司 | 数据对象映射方法、装置、设备和计算机可读存储介质 |
CN109857387A (zh) * | 2019-01-03 | 2019-06-07 | 中国银行股份有限公司 | 一种生成java类对象的方法及电子设备 |
CN109902008A (zh) * | 2019-02-22 | 2019-06-18 | 广州视源电子科技股份有限公司 | 程序测试结果的获取方法和获取装置、兼容性测试方法 |
CN110018824A (zh) * | 2018-11-28 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种将领域对象转换为视图对象的方法和装置 |
CN110764770A (zh) * | 2018-07-27 | 2020-02-07 | 北京京东尚科信息技术有限公司 | 一种对象间转换与赋值的方法和装置 |
CN111090971A (zh) * | 2019-12-11 | 2020-05-01 | 哈尔滨安天科技集团股份有限公司 | 一种将多源信息导出为Excel文件的方法及装置 |
CN113961238A (zh) * | 2021-10-27 | 2022-01-21 | 国网信息通信产业集团有限公司 | 对象转换方法、装置及电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101699397A (zh) * | 2009-10-09 | 2010-04-28 | 上海宝信软件股份有限公司 | 实现Java与XML数据绑定的方法 |
CN105138613A (zh) * | 2015-08-07 | 2015-12-09 | 北京思特奇信息技术股份有限公司 | 一种业务对象和xml报文相互转换的方法及系统 |
US20170091210A1 (en) * | 2015-09-30 | 2017-03-30 | International Business Machines Corporation | Mapping non-generic markup language elements to generic object-oriented programming language objects |
-
2017
- 2017-04-25 CN CN201710279795.8A patent/CN107239492A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101699397A (zh) * | 2009-10-09 | 2010-04-28 | 上海宝信软件股份有限公司 | 实现Java与XML数据绑定的方法 |
CN105138613A (zh) * | 2015-08-07 | 2015-12-09 | 北京思特奇信息技术股份有限公司 | 一种业务对象和xml报文相互转换的方法及系统 |
US20170091210A1 (en) * | 2015-09-30 | 2017-03-30 | International Business Machines Corporation | Mapping non-generic markup language elements to generic object-oriented programming language objects |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595164A (zh) * | 2018-04-08 | 2018-09-28 | 浙江网盛数新软件股份有限公司 | 一种数据格式与Java对象的转换方法 |
CN110764770A (zh) * | 2018-07-27 | 2020-02-07 | 北京京东尚科信息技术有限公司 | 一种对象间转换与赋值的方法和装置 |
CN110018824A (zh) * | 2018-11-28 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种将领域对象转换为视图对象的方法和装置 |
CN109670053A (zh) * | 2018-12-25 | 2019-04-23 | 北京锐安科技有限公司 | 数据对象映射方法、装置、设备和计算机可读存储介质 |
CN109857387A (zh) * | 2019-01-03 | 2019-06-07 | 中国银行股份有限公司 | 一种生成java类对象的方法及电子设备 |
CN109902008A (zh) * | 2019-02-22 | 2019-06-18 | 广州视源电子科技股份有限公司 | 程序测试结果的获取方法和获取装置、兼容性测试方法 |
CN111090971A (zh) * | 2019-12-11 | 2020-05-01 | 哈尔滨安天科技集团股份有限公司 | 一种将多源信息导出为Excel文件的方法及装置 |
CN113961238A (zh) * | 2021-10-27 | 2022-01-21 | 国网信息通信产业集团有限公司 | 对象转换方法、装置及电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107239492A (zh) | Xml文档转换为对象、对象转换为xml文档的方法及装置 | |
JP5453273B2 (ja) | グラフベース計算におけるデータフロー管理 | |
US7941417B2 (en) | Processing structured electronic document streams using look-ahead automata | |
US7860817B2 (en) | System, method and computer program for facet analysis | |
Fu et al. | Model checking XML manipulating software | |
JP2010501096A (ja) | ラッパー生成およびテンプレート検出の協同最適化 | |
JP2005018776A (ja) | クエリ中間言語の方法およびシステム | |
WO2001084495A2 (en) | Extensible markup language genetic algorithm | |
CN110059085B (zh) | 一种面向Web 2.0的JSON数据解析与建模方法 | |
CN109460220A (zh) | 报文预定义代码生成方法、装置、电子设备和存储介质 | |
CN102968431B (zh) | 一种基于依存树的中文实体关系挖掘的控制装置 | |
JP5347965B2 (ja) | Xmlデータ処理システム、該システムに用いられるデータ処理方法及びxmlデータ処理制御プログラム | |
CN107220250A (zh) | 一种模板配置方法及系统 | |
CN115358200A (zh) | 一种基于SysML元模型的模板化文档自动生成方法 | |
Nawrocki et al. | An extensible user interface for Lean 4 | |
CN114168149A (zh) | 一种数据转换方法及装置 | |
Jiang et al. | Scalable processing of contemporary semi-structured data on commodity parallel processors-a compilation-based approach | |
Cetorelli et al. | The smallest extraction problem | |
CN102708285B (zh) | 基于复杂网络模型并行化PageRank算法的核心药物挖掘方法 | |
Liu et al. | An XML-enabled data extraction toolkit for web sources | |
JP4854542B2 (ja) | 文書検索システム及び文書検索方法 | |
CN107038148A (zh) | Xml文档的解析方法及解析装置 | |
US7805424B2 (en) | Querying nested documents embedded in compound XML documents | |
CN106663094B (zh) | 用于线性广义ll识别和上下文感知解析的方法和系统 | |
Bernardi et al. | Web applications design evolution with UWA |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20171010 |
|
WD01 | Invention patent application deemed withdrawn after publication |