오프라인 분석 XML (연결 되 지 않 음) 오류 해결 방법

2778 단어 xmlHibernateBlog
해결 방법 은 이 형의 블 로 그 를 참조 할 수 있다.
http://tailsherry.iteye.com/blog/98111
두 번 째 방법 에 대해 두 개의 작은 가 지 를 보충 합 니 다.
1. 내부 클래스 를 직접 쓰 고 코드 는 다음 과 같다.
class NoOpEntityResolver implements EntityResolver {
		  public InputSource resolveEntity(String publicId, String systemId) {
		    return new InputSource(new StringBufferInputStream(""));
		  }
	}

사용 시 코드 추가:
xmlReader.setEntityResolver(new NoOpEntityResolver());

그래도 통과 할 수 있어.
2. hibenate 의 처리 방식 을 참고 하여 Entity Resolver 를 실현 할 수 있 습 니 다.org. hibenate. util. DTDTEntity Resolver 를 보십시오.여기에 resolve Entity () 방법 을 붙 입 니 다.
public InputSource resolveEntity(String publicId, String systemId) {
		if ( systemId != null ) {
			log.debug( "trying to resolve system-id [" + systemId + "]" );
			if ( systemId.startsWith( HIBERNATE_NAMESPACE ) ) {
				log.debug( "recognized hibernate namespace; attempting to resolve on classpath under org/hibernate/" );
				String path = "org/hibernate/" + systemId.substring( HIBERNATE_NAMESPACE.length() );
				InputStream dtdStream = resolveInHibernateNamespace( path );
				if ( dtdStream == null ) {
					log.debug( "unable to locate [" + systemId + "] on classpath" );
					if ( systemId.substring( HIBERNATE_NAMESPACE.length() ).indexOf( "2.0" ) > -1 ) {
						log.error( "Don't use old DTDs, read the Hibernate 3.x Migration Guide!" );
					}
				}
				else {
					log.debug( "located [" + systemId + "] in classpath" );
					InputSource source = new InputSource( dtdStream );
					source.setPublicId( publicId );
					source.setSystemId( systemId );
					return source;
				}
			}
			else if ( systemId.startsWith( USER_NAMESPACE ) ) {
				log.debug( "recognized local namespace; attempting to resolve on classpath" );
				String path = systemId.substring( USER_NAMESPACE.length() );
				InputStream stream = resolveInLocalNamespace( path );
				if ( stream == null ) {
					log.debug( "unable to locate [" + systemId + "] on classpath" );
				}
				else {
					log.debug( "located [" + systemId + "] in classpath" );
					InputSource source = new InputSource( stream );
					source.setPublicId( publicId );
					source.setSystemId( systemId );
					return source;
				}
			}
		}
		// use default behavior
		return null;
	}

좋은 웹페이지 즐겨찾기