0

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;
]>

資格情報がないとファイル「catalog.pen」にアクセスできないため、ファイル IO エラーが発生します。認証情報を javax.xml.transform.Source に渡す方法はありますか?

また、xml を「所有」していないため、DTD 宣言を変更できません。読むしかない。

4

1 に答える 1

2

カスタム エンティティ リゾルバーを使用してファイルを取得できます (資格情報を使用するか、キャッシュされたバージョンのファイルを使用して)。例については、Java、xml、XSLT: DTD 検証の防止を参照してください。

于 2012-04-19T07:10:35.667 に答える