2012-04-19 16 views
0

Javaアプリケーションを介してXMLを変換しています。私は、XMLを解析したときのjavax.xml.transform.Sourcejavax.xml.transform資格情報付きソース

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に渡す方法はありますか?

また、XMLを「所有していない」ため、DTD宣言を変更することはできません。私はそれを読むことしかできない。

答えて

2

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