在众多的开源XML数据库中,我首先选择了BaseX来了解。 BaseX主页,想了解BaseX大概情况的主要参照该网站,本文主要是对自己在了解BaseX过程中知道的情况和遇到的问题写下来,也供读者借鉴吧 : )。
BaseX有三种模式,服务器、客户端和单机模式。windows下装BaseX还是很方便的,BaseX网站提供了exe文件,不像Xindice(我装两次还失败了,RP~~)还需要一个一个设置,虽然也比较简单。
BaseX一个比较显著地优点是有了GUI,界面中有查询窗口,可采用XQuery查询相关数据库中的XML文件;也有能够动态展示xml文件层次和节点关系的图。但我感觉也就这点好处了,编程时和GUI无关了。
和Xindice相比,BaseX更能支持大型XML文档的存储,而Xindice对大型xml没有很好的支持,为管理中小型文档的集合而设计。
在调试BaseX时,首先遇到了Eclipse安装XQDT的问题,需要先装DLTK( )
然后装载BaseX网站中code examples时也遇到了不少问题,首先要知道在BaseX安装文件目录中已经为我们备好相关api库文件(我就一开始没注意,找缺少的jar找了半天,网上还没有相关…………),导入到程序中即可。
还有一点很重要,也令我不解的是,用BaseX客户端命令行或者GUI或者是程序中利用客户端session执行命令行语句对数据库进行操作时,所对应的数据库都是在BaseX安装目录下地data文件中,也就是一般情况的数据库都是在这个data文件夹中。而在程序中使用XML:DB的API进行数据库操作或者是单机模式cmd时,所对应的初始URI却对应着C:\Users\shy\BaseXData(Win7)文件夹,shy是我的用户名。如下代码片段:
/** Database driver. */ private static final String DRIVER = "org.basex.api.xmldb.BXDatabase"; /** Name of the referenced database. */ private static final String DBNAME = "xmldb:basex://localhost:1984/XMLDBCollection"; //其中的XMLDBCollection程序是从C:\Users\shy\BaseXData文件夹中寻找的,如果找不到下面的DatabaseManager.getcollection(...)会返回null