2012-04-19 2 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 오류 파일을 얻을를 I 때문에 자격 증명을 사용하지 않고 "catalog.pen"파일에 액세스 할 수 없습니다. 자격 증명을 javax.xml.transform.Source에 전달하는 방법이 있습니까?

또한 XML을 "소유하지"않기 때문에 DTD 선언을 변경할 수 없습니다. 나는 그것을 읽을 수만있다.

답변

2

사용자 지정 엔터티 확인자를 사용하여 자격 증명을 사용하거나 파일의 캐시 된 버전을 사용하여 파일을 검색 할 수 있습니다. 예를 들어 Java, xml, XSLT: Prevent DTD-Validation을 참조하십시오.

관련 문제