将XML目录与内部使用JAXP的Java库一起使用

2019年10月5日 15点热度 0条评论

我正在使用Apache Web服务xml rpc库向rpc服务发出请求。该过程中的某个地方是一个XML文档,该文档带有DTD对http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd的引用,该库在解析XML时会尝试下载该文档。该下载失败,并带有503状态代码,因为w3c阻止了从Java客户端重复下载该很大程度上静态的文档。

解决方案是使用XML Catalogs在本地缓存DTD。但是,虽然我可以找到在JAXP SAXParser实例上直接设置EntityHandler来启用目录解析器支持的示例,但实际上我在这里无权访问基础解析器。 xml rpc库正在使用它。有什么方法可以设置全局属性,还是可以告诉JAXP使用XML目录的方法?

解决方案如下:

我认为您需要系统属性xml.catalog.files

看看http://xml.apache.org/commons/components/resolver/resolver-article.html

顺便说一句,这是Google搜索jaxp catalog的第三次点击