차이

2013-01-03 5 views
0

어제는 SAX2의 API 클래스 XMLReaderFactory를하고 SAXParserFactory와 JAXP의 API 관련 문서를 읽었습니다. 둘 다 XMLReader 클래스의 인스턴스를 제공하는 것과 동일한 목적을 수행하는 데 사용되었습니다. 그런 다음 두 가지의 차이점을 이해하고 특정 시나리오에서 더 유용 할 다양한 자료를 살펴 보았습니다. 차이

내가 위의 질문에 대한 읽고 자료의 대부분은 아래의 차이를 밝혔다.

헬퍼 클래스 XMLReaderFactory를 방법 createXMLReaderFactory (문자열 클래스 이름)의 문제는 공장이 필요 파서 클래스의 문자열 이름을 사용하는 인수로 (즉 아파치 클래스, org.apache 것입니다. xerces.parsers.SAXParser, 다시). 다른 파서 클래스를 String으로 전달하여 파서를 변경할 수 있습니다. 당신이 파서 이름을 변경하는 경우이 방법으로 는, 당신은 변화에 어떤 import 문이 필요하지 않습니다,하지만 당신은 여전히 ​​ 클래스를 다시 컴파일해야합니다. 이것은 분명히 최선의 해결책은 아닙니다. 클래스를 다시 컴파일하지 않고도 파서를 쉽게 변경할 수있는 것이 훨씬 더 많습니다 ( ).

JAXP는 더 나은 대안을 제공합니다 : 그것은 당신이 Java 시스템 등록 정보로 파서를 제공 할 수 있습니다. 물론 Sun에서 배포판을 다운로드하면 Sun의 Xerces 버전을 사용하는 JAXP 구현을 얻을 수 있습니다. 파서 변경 - 오라클의 파서 말은 - 당신이 다른 하나 파서 구현에서 이동, 클래스 경로 설정을 변경 해야하지만 코드 재 컴파일을 필요로하지 않습니다. 그리고 이것은 JAXP의 모든 것인데 추상화 된 마술입니다. 사람이 에게 말해 줄 수있는 특정 방법의 특정 시나리오의 사용은

더 유용 될 것입니다하지만 우리는 방법 createXMLReaderFactory (문자열 클래스 이름)을 사용하는 경우 이후는 대신 통과의 위의 차이에 동의하지 않는 클래스 이름을 메소드에 직접 보내고 클래스의 이름을 특성 파일에서 읽은 다음 메소드에 전달하면 클래스를 다시 컴파일 할 필요가 없습니다.

제가 위의 사항에 해당하는지 아닌지 알려주십시오.

는 아무도 나에게 SAX2의 API 클래스 XMLReaderFactory를하고 SAXParserFactory와 JAXP의 API의 사이의 차이를 말할 수 있습니까?

+0

Probable duplicate : [이전 질문] (http://stackoverflow.com/questions/10583536/difference-saxparserfactory-xmlreaderfactory-which-one-to- 선택) – codeMan

+0

http://docs.oracle.com/cd/B19306_01/appdev.102/b14252/adx_j_parser.htm –

+0

코드 맨에게 :이 질문에 이전에 물어 보았다면 나에게 그 링크를 제공 할 수 있습니까? 그래서 나는 그것으로부터 나의 이해를 얻을 수있다. – Beast

답변

0

JAXP의 SAXParserFactorySAXParser은 SAX API의 XMLReaderFactoryXMLReader의 편리한 외관 일뿐입니다. SAXParser은 내부적으로 실제 구문 분석을 위해 XMLReader을 사용합니다. XMLReader.parse(InputSource)으로 SAXParser를 사용하지 않고 XML을 구문 분석 할 수 있지만보다 편리합니다. SAXParser.parse(InputSource, DefaultHandler).