2013-07-24 2 views
0

JAXB가 XSD 스키마와 동일한 네임 스페이스 접두사를 생성하도록하는 방법이 있는지 궁금합니다. 즉, 클래스를 정렬 한 후에 xmlns : cts = "http://cts.com"이있는 스키마에서 JAXB 클래스를 만들지 만 xmlns : ns1 접두사가있는 XML을 얻습니다. NamespacePrefixMapper 클래스를 사용하여이 클래스를 재정의 할 수 있다는 것을 알고 있지만 XSD가 기본 접두사를 명확하게 정의 할 때 수동으로이 작업을 수행해야하는 이유는 무엇입니까? 현재 XML에는 접두어가 1 톤 있습니다. 따라서 패키지 수준 선언이나 클래스 주석을 수동으로 변경하는 작업은 초기 xjc 생성 이후 큰 재 작업입니다. 나는 수십 개의 루트 요소와 함께 10 개 이상의 XSD 가져 오기 및 5000 개 이상의 요소가있는 기본 XSD를 처리하고 있습니다.JAXB - XSD에 정의 된 네임 스페이스 접두어 사용

끝점 시스템이 우리 통제에서 벗어 났으므로 적절한 XML 처리 구현이 없으므로 접두어가 XML에 사용되는지 신경 써야합니다.

이 바로 가기가 있습니까? 모든 입력에 감사드립니다.

감사합니다, 고칸

답변

2

간단한 바로 가기 표준 XML 처리 도구를 사용하는 XML의 생산자와 소비자를위한 것입니다. 당신은 당신의 상황에서 작동하지 않는다고 말합니다.

데이터 소비자가 기존의 XML 도구를 사용하는 방법을 배우지 못하게하려면 정확한 XML뿐만 아니라 올바른 XML을 생성해야하는 노력이 필요합니다 대부분의 XML 소프트웨어가 은폐하도록 설계된 추상화 수준에서 추가 임의의 임시 제한 조건을 충족합니다. 아주 좋은 고객이라면 그만한 가치가있을 것입니다.

구체적으로 말하자면 (1) JaxB가 생성 한 클래스에 적용하려는 구성 변경을 자동화하는 방법을 찾거나 (2) 네임 스페이스 접두사를 정규화하기 위해 간단한 SAX 필터를 작성하고 데이터를 실행합니다. 문 밖으로 나올 때 그 필터를 통해. 두 번째 접근법은 데이터 소비자의 관심사를 자신의 처리 주변으로 옮겨 더 관심있는 것에 더 집중할 수있게하는 덕목을 가지고 있습니다.

관련 문제