gpt4 book ai didi

java - 如何强制使用特定的 XML 解析器

转载 作者:数据小太阳 更新时间:2023-10-29 02:02:37 26 4
gpt4 key购买 nike

我的应用程序的类路径中都有 Xerces 和 Oracle XML 解析器(不要问为什么)。

当我创建一个新的 javax.xml.parsers.DocumentBuilderFactory 时,类加载器会自动选择 Oracle XML 解析器。但是,这不是一个完整/正确的实现,所以让我很头疼。

有什么方法可以强制/告诉类加载器在构建文档生成器工厂时使用 Xerces parces?

最佳答案

对于我的大型项目,skaffman 的回答在大部分时间都有效,但并非所有时间都有效,因为我们有多个依赖于这些库的子项目。我们查看了 javax.xml.transform.TransformerFactory.newInstance() 的源代码,发现它使用了 javax.xml.transform.FactoryFinder.find("javax.xml.transform.TransformerFactory", ...)。然后,此方法查看系统参数以确定正确的实现。

我们最终通过在运行时添加 -D 参数来强制使用正确的类来修复它:

-Djavax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl-Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl-Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl

关于java - 如何强制使用特定的 XML 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3316644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com