首页 > 其他分享 >xml文档操作的一个问题记录

xml文档操作的一个问题记录

时间:2023-02-28 18:23:02浏览次数:41  
标签:xml transxml 记录 jar weblogic 文档 javax TransformerFactoryImpl

关于xml文件转换报错问题
在一次UAT测试环境中发现的有关xml文件操作的问题,
程序加载模板文件 **.xsl(一种xml格式的文件),读取一个xml文件内容,将xml转换为预期的一个xml,
在根据模板转换xml时,开发环境运行正常,tomcat+eclipse+jdk1.6,
当发布到UAT环境(weblogic11g+jdk1.6),xml转换程序一直报错,部分错误日志

javax.xml.transform.TransformerConfigurationException: 无法编译样式表
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:828)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:617)
at weblogic.xml.jaxp.WebLogicTransformerFactory.newTransformer(WebLogicTransformerFactory.java:233)
at weblogic.xml.jaxp.RegistryTransformerFactory.newTransformer(RegistryTransformerFactory.java:209)

/weblogic11g/wlserver_10.3/server/lib/weblogic.jar

项目中包含
ui/WEB-INF/lib/New_Xalan.jar
ui/WEB-INF/lib/weblogic.jar
【原因是】New_Xalan.jar与weblogic.jar这两个包冲突,weblogic容器中,weblogic优先使用了自己的jar包/weblogic11g/wlserver_10.3/server/lib/weblogic.jar

可以在转换程序中,强制代码指定使用New_Xalan.jar包的实现类,
String transxml = System.getProperty("javax.xml.transform.TransformerFactory");
if (transxml == null || "".equals(transxml)) {
System.setProperty("javax.xml.transform.TransformerFactory","org.apache.xalan.processor.TransformerFactoryImpl");
}

最终再移除这个配置信息,不要影响JVM的配置信息
if (transxml == null || "".equals(transxml)) {
System.clearProperty("javax.xml.transform.TransformerFactory");
}
//weblogic.xml.jaxp.RegistryTransformerFactory
//这个是weblogic包的实现类

标签:xml,transxml,记录,jar,weblogic,文档,javax,TransformerFactoryImpl
From: https://www.cnblogs.com/qiaoblog/p/17165497.html

相关文章