带有凭据的javax.xml.transform源

时间:2012-04-19 00:34:56

标签: java xml xml-parsing

我正在通过Java应用程序转换一些xml。我用javax.xml.transform.Source

加载xml
Source 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。我只能读它。

1 个答案:

答案 0 :(得分:2)

您可以使用自定义实体解析程序来检索文件(通过使用凭据或使用文件的缓存版本)。有关示例,请参阅Java, xml, XSLT: Prevent DTD-Validation