개발/java,spring
[java] xml 파싱 dtd 경로를 읽어 에러가 나는 경우 무시하기.
Mr.Lee 하루
2024. 8. 30. 14:07
안녕하세요.
오랜만에 자바에 대한 포스팅을 합니다.
이제 블로그에 있는것들을 보거나... 거의 운영업무를 하고 있어
포스팅 할 기회가 없었어요.
자바를 사용하던 중 무심코 xml 을 파싱하려고 하는데
에러가 발생하네요
xml 파일 윗줄에 이렇게 적혀 있는 경우가 있습니다.
<!DOCTYPE package-data SYSTEM ~~~~~>
이런경우에 doctype 부분의 파일을 찾는데
이때 에러가 발생 할 수 있습니다.
기존 소스에는 이렇게 사용 하였습니다.
DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlFile);
DTD 파일 읽는 부분을 무시하고자 한다면 이렇게 바꾸세요.
try {
Document doc = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(false);
dbf.setNamespaceAware(true);
dbf.setFeature("http://xml.org/sax/features/namespaces", false);
dbf.setFeature("http://xml.org/sax/features/validation", false);
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
DocumentBuilder db = dbf.newDocumentBuilder();
db.parse(xmlFile);
}
catch 부분은 시스템에서 자동으로 만들어 주는 기능을 사용하면 됩니다.
자동적으로 dtd 파일을 읽는 문제 발생하시는 분은
참고 하세요.
고생하세요.