JavaTM Platform
Standard Ed. 6

org.xml.sax
인터페이스 EntityResolver

기존의 서브 인터페이스의 일람:
EntityResolver2
기존의 구현 클래스의 일람:
DefaultHandler , DefaultHandler2 , HandlerBase , XMLFilterImpl


public interface EntityResolver

엔티티를 해결하기 위한 기본 인터페이스입니다.

이 모듈은, 원시 코드, 문서 모두 공개 도메인에 놓여져 있습니다. 따라서, 내용에 관한보증은 일절 제공되지 않습니다. 상세한 것에 대하여는,http://www.saxproject.org 를 참조해 주세요.

외부 엔티티의 커스텀 처리를 구현할 필요가 있는 경우, SAX 어플리케이션은 이 인터페이스를 구현해,setEntityResolver 메소드를 사용해 SAX 드라이버에 인스턴스를 등록할 필요가 있습니다.

그 후, XML 리더에 의해, 어플리케이션은 외부 엔티티 (외부 DTD 부분집합, 외부 파라메이타엔티티를 포함한다)를 수중에 넣기 전에 차단할 수 있게 됩니다.

이 인터페이스를 구현해야 하는 SAX 어플리케이션은 그다지 없습니다. 그러나, 이 인터페이스는, 데이타베이스나 그 외의 특수한 입력 소스로부터 XML 문서를 구축하는 것 같은 어플리케이션, 혹은 URL 이외의 URI 형을 사용하는 어플리케이션에 있어 매우 유익합니다.

이하의 리절버는, 시스템 식별자 「http://www.myhost.com/today」를 사용해, 어플리케이션에 엔티티의 특수 문자 스트림을 제공합니다.

 import org.xml.sax.EntityResolver;
 import org.xml.sax.InputSource;

 public class MyResolver implements EntityResolver {
   public InputSource resolveEntity (String publicId, String systemId)
   {
     if (systemId.equals("http://www.myhost.com/today")) {
              // return a special input source
       MyReader reader = new MyReader();
       return new InputSource(reader);
     } else {
              // use the default behaviour
       return null;
     }
   }
 }
 

어플리케이션도 또, 이 인터페이스를 사용해 시스템 식별자를 로컬 URI 에 리다이렉트(redirect) 하거나 카탈로그내의 치환치를 검색하거나 (일반적으로, 공개 식별자를 사용) 할 수 있습니다.

도입된 버젼:
SAX 1.0
관련 항목:
XMLReader.setEntityResolver(org.xml.sax.EntityResolver) , InputSource

메소드의 개요
 InputSource resolveEntity (String  publicId, String  systemId)
          어플리케이션이 외부 엔티티를 해결할 수 있도록(듯이) 합니다.
 

메소드의 상세

resolveEntity

InputSource  resolveEntity(String  publicId,
                          String  systemId)
                          throws SAXException ,
                                 IOException 
어플리케이션이 외부 엔티티를 해결할 수 있도록(듯이) 합니다.

퍼서는, 톱 레벨의 문서 엔티티를 제외한 모든 외부 엔티티를 열기 전에, 이 메소드를 호출합니다. 이러한 엔티티로서 외부 DTD 부분집합이나 DTD 내에서 참조되는 파라메이타엔티티 (어느 쪽의 경우도, 퍼서가 외부 파라메이타엔티티를 읽어들이는 경우만), 문서 요소내에서 참조되는 일반적인 외부 엔티티 (퍼서가 일반적인 외부 엔티티를 읽어들이는 경우)가 있습니다. 어플리케이션은, 퍼서에게 엔티티 자체의 검출, 대체 URI 의 사용, 또는 어플리케이션에 의해 제공되는 데이터의 문자 또는 바이트 입력 스트림로서의 사용을 요구할 수 있습니다.

어플리케이션의 작성자는, 이 메소드를 사용해 외부 시스템 식별자를 안전한 로컬 URI 에 리다이렉트(redirect) 하거나 카탈로그내의 공개 식별자를 검색하거나 데이타베이스나 그 외의 입력 소스 (예를 들어 다이알로그 박스)로부터 엔티티를 읽어내거나 할 수 있습니다. XML 도 SAX 도, 공개 또는 시스템 ID 를 사용해 자원을 해결하기 위한 적절한 정책를 지정하지 않습니다. 다만, SAX 는, 이 메소드에 의해 반환되는 InputSource 의 해석 방법과 아무것도 돌려주어지지 않았던 경우는 시스템 ID 가 URL 로서 역참조되는 것을 지정합니다.

시스템 식별자가 URL 의 경우, SAX 퍼서는 이것을 어플리케이션에 보고하기 전에 완전하게 해결할 필요가 있습니다.

파라미터:
publicId - 참조되는 외부 엔티티의 공개 식별자. 제공되지 않았던 경우는 null
systemId - 참조되는 외부 엔티티의 시스템 식별자
반환값:
새로운 입력 소스를 기술하는 InputSource 객체. 퍼서에게 시스템 식별자에의 정규 URI 접속을 요구하는 경우는 null
예외:
SAXException - SAX 예외. 다른 예외를 랩 하고 있을 가능성이 있다
IOException - Java 고유의 입출력 예외. 일반적으로, InputSource 의 새로운 InputStream 또는 Reader 하지만 생성되면(자) 발생하는
관련 항목:
InputSource

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.