javax.xml.transform 带有凭据的源

标签 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。我只能阅读。

最佳答案

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

关于javax.xml.transform 带有凭据的源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10220065/

相关文章:

java - XMLStreamReader - 文件末尾会发生什么?

java - 在 Android 中解析 XML

java - Android listview排序使用xml解析

java - 我的 if-else 语句有一个问题,我的变量没有被初始化

Android - 形状标签中 useLevel 的用途

XML targetNamespace 和元素的非限定声明

java - 使用 Java 的 XML Splitter - 索引设置距标签的偏移量,省略开始空格

java - 列名无效 "account"

java - Autowiring 返回 NullPointerException

java - 使用 Solr 索引文档导致预期的 MIME 类型应用程序/八位字节流但得到 text/html