[java] xml 파싱 dtd 경로를 읽어 에러가 나는 경우 무시하기. :: 개발/일상_Mr.lee

[java] xml 파싱 dtd 경로를 읽어 에러가 나는 경우 무시하기.

Posted by Mr.mandu.
2024. 8. 30. 14:07 개발/java,spring

안녕하세요.

 

오랜만에 자바에 대한 포스팅을 합니다.

이제 블로그에 있는것들을 보거나... 거의 운영업무를 하고 있어

포스팅 할 기회가 없었어요.

 

자바를 사용하던 중 무심코 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 파일을 읽는 문제 발생하시는 분은

참고 하세요.

 

고생하세요.