JAVA程序员测试题
条件:现给出以下XML文档:<?xml version=“1.0” encoding=“GB2312”?><CDCA-WFS-WORK-CALENDAR YEAR=“2002” WORKHOURSPERDAY=“8”><MONTH-FREE-DAYS><Jan>5,6</Jan><Feb></Feb><Mar></Mar><Apr></Apr><May></May><Jun></Jun><Jul></Jul><Aug></Aug><Sept></Sept><Oct>1,2,3,4,5,6,7</Oct><Nov></Nov><Dec></Dec></MONTH-FREE-DAYS><SPECIAL-WORKHOURS-DAYS> <DAY MONTH=“3” DAY=“8” WORKHOURS=“4”></DAY></SPECIAL-WORKHOURS-DAYS></CDCA-WFS-WORK-CALENDAR>要求:1. 根据您对这个XML文档的理解,为这个XML文档编写Schema,即xsd文件。2. 使用JAVA并选用合适的DOM包(或者J2SE1.4.X内置)写一个可以装入并编辑此文档的程序。3. 定义一个能够等价描述此XML文档内容的关系型数据库的SCHEMA,并建好库,建议选用MS-Access2000数据库。4. 使用合适的JDBC Driver包,可以将此XML文档与与数据库内容同步。
-----------
对这个比较感兴趣,在网上搜了一下,没有发现什么东西。哪位大佬来说说。
-----------
I think it is a kind of driver that is used in java program to connect the database. For example mysql has its own jdbc driver, so dose access2000.
I think this question is very easy, becasue that xml has a very easy format, and no nested nodes in it.
The point of 数据库内容同步 is to build a connection pool, otherwise the database will be down soon.hehe
应届生就做不出来?
解析XML,连接数据库,数据同步
这个要求是比较简单的啊
XMLSPY
还是要努力学习呀!!
使用合适的JDBC Driver包,可以将此XML文档与与数据库内容同步
--------------------------------------------------------
同步我能做到,但是在同步时,肯定要改写xml文件,此时xml文件应该处于锁定状态,我们把xml和数据同步,肯定是为了把xml文件提供外界用的,但xml文件经常被因同步而进行锁定,那这样的同步又有什么意义呢?
同步的速度很快,如果更新的不多,那么可以在<ms级的时间内完成,就是一个k级流的硬盘写入,跟外面的访问是根本察觉不到的.你考虑的太多了.关于这个题:1. 根据您对这个XML文档的理解,为这个XML文档编写Schema,即xsd文件。没做过.是规定xml取值范围的,听说里面常用正则表达式.2. 使用JAVA并选用合适的DOM包(或者J2SE1.4.X内置)写一个可以装入并编辑此文档的程序。我喜欢用JDom,手写不成,如果用IDE的话,这个不是问题.
主要语句的好像是:
//加载xml文件生成对象
Document doc= Document.build(File file);
//获取根节点
Element rootEle = doc.getRoot();
//获取根节点下名字为"abc"的子节点列表
List others = rootEle.getChildren("abc");
//取第一个子节点
Element ele =(Element)others.get(0);
//获取此节点attribute是"dbs"的内容.
//如子节点是:<abs dbs="321">123</abs>
//那么得到"321"
String attr = ele.getAttibute("dbs");
//获取子节点内容,如上例则获取"123"
String text = ele.getText();
上面的是靠记忆写的,不一定准确.具体的意思大家可以参考api.
3. 定义一个能够等价描述此XML文档内容的关系型数据库的SCHEMA,并建好库,建议选用MS-Access2000数据库。不会写schema,建库不是问题,access没用过.用Oracle写一个吧:
这个xml文件是描述放假日期和某天要休息半天或者固定时长的.建表如下:FREE_ID NUMBER; --ID,可有可无,索引的时候方便点
IS_ALL_DAY CHAR(1) NOT NULL; --是否是整天都休息,可用'0'或者'1'来区分,当为整天休息的时候,下面的开始,结束时间可以为null,注意保证数据完整性.
FREE_MONTH NUMBER NOT NULL; --月份
FREE_DAY NUMBER NOT NULL; --哪天休息
START_HOUR; --开始时间
END_HOUR; --结束时间
LAST_MOD_TIME DATE; --最后修改时间,用于判断是否需要同步4. 使用合适的JDBC Driver包,可以将此XML文档与与数据库内容同步。具体代码不写了,只要熟悉JDBC和JDOM,这个不是问题.有一点需要注意就是取得xml文件的最后修改日期.
然后select last_mod_time from freetable order by last_mod_time desc
看看两者时间差是多少,根据用户的需求--如一天同步一次还是必须精确到秒来看看是否需要更新以前的xml,不需要的话此线程就sleep(Nms)一下.
这么做是借鉴的tomcat对jsp的管理.即tomcat如何判断一个jsp是否更新需要重新编译.还有几个方法:
把两边的数据都取出来对比看需要是否同步是一个好主意,但是数据量大的话比较浪费时间.
而1秒种从数据库取一次结果直接复写原来的文件也会浪费资源的.
建议这样会更方便:
<?xml version=“1.0” encoding=“GB2312”?><CDCA-WFS-WORK-CALENDAR YEAR=“2002” WORKHOURSPERDAY=“8”><MONTH-FREE-DAYS><DAY MONTH=“1” DAY=“5,6”/>
<DAY MONTH=“10” DAY=“1,2,3,4,5,6,7”/></MONTH-FREE-DAYS><SPECIAL-WORKHOURS-DAYS> <DAY MONTH=“3” DAY=“8” WORKHOURS=“4”></DAY></SPECIAL-WORKHOURS-DAYS></CDCA-WFS-WORK-CALENDAR>刚明白了他的那个xml,发现我的表结构稍微有点问题,大家凑合看吧,该吃饭了,不写了.