그래서이 특정 문제에 대한 해결책을 찾기 위해 많은 노력을 기울였습니다. 누군가가 좋은 방향으로 나를 가리킬 수 있기를 바랍니다.누락 된 네임 스페이스 정의가있는 JAXB 문제
우리는 데이터를 XML로 받고 있으며 XSD 만 있으면 데이터의 유효성을 검사 할 수 있습니다. 그래서 JAXB를 사용하여 Java 클래스를 생성했습니다. 샘플 XML을 비 정렬화할 때 일부 속성 값이 누락되었음을 발견했습니다. 스키마에서 이러한 특성이 QName이 될 것으로 예상하지만 데이터 공급자는 XML에서 접두사를 정의하지 않은 것으로 나타났습니다.
예를 들어 하나의 XML 속성 값은 "repository:<uuid>"
이지만 네임 스페이스 접두어 "저장소"는 데이터 집합에서 정의되지 않습니다.
샘플 세트를 언 마샬 할 때 지정된 접두사 (위 샘플에서 "저장소")가있는 QName 속성이 NULL입니다! 그래서 그것은 JAXB가 정의되지 않은 네임 스페이스 접두어를 가진 속성 QName 값을 "버리고"있는 것처럼 보입니다. 나는 그것이 지역 이름조차 보존하지 않는다는 사실에 놀랐다.
이상적으로는 값을 그대로 유지하고 싶지만 QName을 바인딩 타임 (Java에 대한 스키마)에서 String으로 매핑 할 수없는 것처럼 보입니다.
"수동으로"XML에 네임 스페이스 정의를 삽입하려고 시도했지만 매력처럼 작동합니다. 이 작업을 수행하는 가장 복잡한 방법은 무엇입니까?
런타임에 네임 스페이스 매핑/정의를 "삽입"할 수 있습니까? 또는 바인딩 시간에 "전역 적으로"정의 할 수 있습니까?
CSD와 XML 문서의 관련 부분을 게시하는 것이 좋습니다. JAXB un-marshalling에서 문제가되는 XSD를 따르지 않는 XML은 여전히 유효합니다. XML이 실제로 XSD (예 : 온라인 유효성 검사 도구 사용)를 준수한다는 것을 확인한 경우 그렇게 말하여 SO 도우미가 방해하지 않도록하십시오. –
좀 더 자세한 정보를 제공해야하는지 궁금했지만, 태블릿에서는 약간 어려웠습니다. 다음 번에는 실제 코드 입찰가를 제공 할 것입니다. 의견을 보내 주셔서 감사합니다. – raydogg