我正在通过Java应用程序转换一些xml。我用javax.xml.transform.Source
加载xmlSource src = new StreamSource(getXml());
解析xml时,它会尝试加载DTD和一些实体:
<!DOCTYPE dmodule SYSTEM "http://mysecureserver/System/DTD/dmodule/proced.dtd"[
<!NOTATION SWF SYSTEM "">
<!NOTATION PNG SYSTEM "">
<!ENTITY % catalog PUBLIC "-//MyCompany//ENTITIES//EN "http://mysecureserver/catalog.pen">
%catalog;
]>
我收到文件IO错误,因为我无法使用凭据访问文件“catalog.pen”。有没有办法将凭据传递给javax.xml.transform.Source?
另外,我无法更改DTD声明,因为我没有“拥有”xml。我只能读它。
答案 0 :(得分:2)
您可以使用自定义实体解析程序来检索文件(通过使用凭据或使用文件的缓存版本)。有关示例,请参阅Java, xml, XSLT: Prevent DTD-Validation。