将XML结点转换成JAVABEAN并存入数据库

豆豆网   技术应用频道   2007年07月03日    社区交流

内容摘要:动解析的过程中,我们仍然发现各个结点的解析和入库中有很多东西是共同的,或者有共同的规律,这些东西可以抽出来作为一个准框架,然后再将结点中不同的部分开放出来,允许具体的结点做具体的实现,并最终形成一个半自动的解析/入库框架。

  1.概述

  我们要将外部系统给的XML文件进行解析,并存入到数据库。

  但是我们并没有DTD或者Schema,只有一个WORD格式的说明文档;更离谱的是,XML结点树的结构(即XML结点与XML结点之间的关系)与业务Bean树的结构(即业务Bean与业务Bean的关系)并不完全一致,比如说,从业务角度讲,一只猪有只猪头,而在XML里,却写成了 pig --content --pighead 的三级关系,无端端多了一个content结点! 没有DTD/Schema,结构又不规范,我们就没法用自动化的第三方JAVA转换API进行解析,而只能手动地、一个一个地解析。但在手动解析的过程中,我们仍然发现各个结点的解析和入库中有很多东西是共同的,或者有共同的规律,这些东西可以抽出来作为一个准框架,然后再将结点中不同的部分开放出来,允许具体的结点做具体的实现,并最终形成一个半自动的解析/入库框架。

  为什么说它是半自动的?它有哪些限制?

  自动:不必为每个结点编写XML 解析代码和入库代码

  “半”:需手动地编写每个JAVABEAN,并手动地为每个BEAN建表

  限制:

  a.所有业务字段的类型只能设为STRING/VARCHAR,并且非业务字段的类型在BEAN中不能为STRING

  b.BEAN名与表名必须相同,或者可以进行一对一映射

  c.BEAN的成员变量名必须与XML结点的属性名/元素名相同,或者可以进行一对一映射

  这三种限制都是利用JAVA反射机制进行自动操作的前提。

  2.基本思想

  所谓的XML解析,就是将XML结点转换成JAVABEAN实例,XML结点的ATTRIBUTE值和ELEMENT值就是JAVABEAN实例的成员变量值; 所谓的持久化,就是将JAVABEAN实例变成数据库对应表中的一条记录,JAVABEAN实例的成员变量值就是记录中某个字段的值,或者其他表中某个参考了该记录的另一条记录。

责编:豆豆技术应用

正在加载评论...