Java 6에서 전체 xerces XML 구문 분석기/직렬 변환기 구현은 이제 Java 런타임 (rt.jar)에 있습니다. 패키지가 com.sun. * 네임 스페이스 아래로 이동되었습니다.이 네임 스페이스는 클라이언트 코드 내에서 명시 적으로 참조 할 수 있도록 제한을 두지 않습니다. javax API 정의 팩토리를 통해 인스턴스화 된 파서를 사용할 때 이것은 문제가되지 않습니다.Java 6에서 xerces 직렬화
그러나 우리 코드는 xerces serialization (org.apache.xml.serialize. *)도 사용합니다. AFAICT에는, Serializer 및 OutputFormat의 인스턴스를 작성하기위한 javax.xml API 정의의 팩토리는 존재하지 않습니다. 이것은 하나를 얻는 유일한 방법은 명시 적으로 com.sun.org.apache.xml.serialize. * API를 호출하는 것입니다.
javax.xml.stream에서 직렬화 클래스를 찾았지만 xerces OutputFormat 클래스와 같은 출력 형식 컨트롤을 제공하지 않는 것 같습니다.
질문 :
는 xerces.jar을 포함하지 않고, 또한 명시 적으로 COM을 인스턴스화하지 않고 javax의 표준 API를 통해 (가의 rt.jar에서 임)의 Xerces 직렬화 기능에 액세스 할 수있는 방법이 있습니까. 태양. * 수업?
그렇지 않은 경우 동일한 효과를 얻을 수있는 javax API 호환 방법이 있습니까?
이것은 우리가 시작한 곳이며 우리가 결론을 내린 것입니다. Xerces의 비 Java-API 부분 (특히 직렬화)을 사용하려면 Xerces를 포함하는 방법이 없습니다. 우리는 코드베이스를 수정하여 시스템 속성에서 Xerces 클래스에 대한 명시적인 언급을 제거하고 파서와 변환기를 인스턴스화 할 때 기본값을 사용하도록했습니다. 모든 기본값이 com.sun에 있으므로 클래스 로딩 충돌을 방지해야합니다. * –