프로그램 에서 dtd 검사 xml 사용 제어

1283 단어 자바xml
우선,DocumentBuilder 에 Entity Resolver 를 설정 합 니 다.

DocumentBuilderFactory df = DocumentBuilderFactory.newInstance() 
DocumentBuilder db = df.newDocumentBuilder();
db.setEntityResolver(new YourHandler());

db 에 자신의 handler 를 설정 합 니 다.다음은 YourHandler 의 실현 입 니 다.

class YourHandler extends DefaultHandler{
 public InputSource resolveEntity (String publicId, String systemId)
	throws IOException, SAXException
    {
	return null;
    }
}

Your Handler 는 Default Handler 를 계승 하고 Default Handler 의 resolve Entity 의 부족 한 실현 은 null,즉 빈 dtd 로 돌아 가 는 것 입 니 다.
DocumentBuilder 의 parse 를 호출 하여 Document 를 만 들 때 YourHandler 의 resolve Entity 방법 을 호출 하여 dtd 파일 을 얻 습 니 다.
Default Handler 의 resolveEntity 를 덮어 쓰 면 프로그램 으로 dtd 검 사 를 사용 할 지,어떤 dtd 로 xml 를 검사 할 지 제어 할 수 있 습 니 다.
예컨대

public InputSource resolveEntity (String publicId, String systemId)
	throws IOException, SAXException
    {
	return new InputSource(new StringReader("<?xml version=\"1.0\" encoding=\"\UTF8"?>"));

    }
}

내용 이 없 는 파일 을 되 돌려 주 는 것 은 검증 을 하지 않 는 것 과 같다.

좋은 웹페이지 즐겨찾기