目前xml已经被广泛应用,我们在程序中也不可少的要读取xml文件,同样,几乎现在所有的主流应用软件都要使xml文件,这是就产生了一个问题,由于xml文件的读取,标准中只是定义了接口,具体的实现可由各软件厂商自行实现,因此,便有了不同版本的xml parser解释器,但不同版本之间的解释器却并不保证一定是兼容的,我就碰到了在tomcat下开发的程序,发布到webphere与oracle 9ias上,由于xml parser的不同,造成程序无法正常运行的后果,下面我就总结以下问题的解决方法.
【程序编程相关:中小企业信息应用的利器:DAP-Dyna】首先确定问题是如何产生的,当我们准备读取一个xml文件时,会在我们的代码中写如下代码: 【推荐阅读:创建虚拟目录的常用属性】
【扩展信息:经典Oracle图书推荐(之四)】saxparserfactory spf = javax.xml.parsers.saxparserfactory.newinstance();xmlreader xmlreader = spf.newsaxparser().getxmlreader();当我们得到了xmlreader以后,就可以读取xml文件了,问题就在于,newinstance()返回的实例到底是哪一个xml parser的实现呢?
当我们进一步深入到jdk的源代码中,就可以发现如下代码,(我现以jdk 1.4.1环境说明),java会调用factoryfinder.find方法寻找合适的xml parserclassloader classloader = findclassloader();
// 首先检查系统property,此属性的关键字是 javax.xml.parsers.saxparserfactory
try { string systemprop = system.getproperty( factoryid ); if( systemprop!=null) { ... 下一页