정의와 구현이 제 통제를 벗어나는 타사 웹 서비스를 사용하고 있습니다. 이 웹 서비스는 앞으로 변경 될 것입니다.WSDL에서 인라인 XSD를 XSD 파일로 자동 추출
웹 서비스는 웹 서비스와 동일한 데이터 (동일한 XSD 유형으로 나타남) 중 일부와 프로그램에서 생성 된 일부 추가 정보가 포함 된 XML 파일을 생성하는 데 사용해야합니다.
내 방식 :
- 내 자신의 XSD가 호출 된 웹 서비스의 WSDL의 XSD 정의를 참조 만들
- 자바를 사용 (이 XSD는 분명히 추가 정보에 대한 XSD 유형이 포함됩니다.) 1 단계에서 만든 내 XSD 파일에서 데이터 바인딩 클래스를 생성하는 XML 데이터 바인딩 프레임 워크 (예 : ADB 또는 JiXB)
- WSDL에서 데이터 바인딩 클래스를 생성하기 위해 동일한 데이터 바인딩 프레임 워크에서 Java SOAP 프레임 워크 (Axis2 또는 CXF) 이 기능을 사용하면 웹 서비스에서 검색 한 객체를 직접 사용할 수 있습니다 on의 XML을 참조하십시오.
내 XSD 파일에서 사용할 예정이지만 WSDL에 정의 된 XSD 유형은 변경 될 수 있습니다. 변경 될 때마다 XSD 및 WSDL 데이터 바인딩을 자동으로 처리하려고합니다. (. 변화가 충분히 큰 경우,이 몇 가지 개발 노력을 트리거 (그러나 일반적으로하지 않을 수 있습니다).)
내 문제 :
웹에서 사용하는 나는이 같은 유형을 참조 XSD에 필요한 1 단계에서서비스.
WSDL은 다른 WSDL을 지칭하는 다른 WSDL을 참조합니다. 결국에는 필요한 인라인 XSD 유형이있는 WSDL이 있습니다. 내가 아는 한 XSD에서 인라인 XSD 유형의 WSDL을 직접 참조 할 수있는 방법이 없습니다.
가장 실용적이라고 생각하는 접근법은 인라인 XSD를 WSDL에서 다른 XSD 파일로 추출하는 자동 처리 (데이터 바인딩 전)에 추가 단계를 포함하는 것입니다. 이러한 다른 XSD 파일은 내 자신의 XSD 파일에서 참조 할 수 있습니다.
것들 내가 피할 싶습니다
- 가 수동으로 XSD 파일에 인라인 XSD를 붙여 복사
- 수동 단계를 (하여 결정처럼 (I은 자동 프로세스를 찾고 있어요.). 수동으로 인라인 유형을 포함하는 WSDL (해당 WSDL의 위치도 변경됩니다.)
- 내 XSD에서 xsd : any를 사용합니다. 내 자신의 XSD 파일이 올바른지 싶습니다.
PS를 구현
는 이미이 같은 필요가있을 것이라고 짐작했다. 난 실제로 뭔가 더 많은 프레임 워크 같은 : ** (XmlSchema xmlSchema : wsdl.extractNamespaceSchemas()) xmlSchema.writeFile (ns2FileName (xmlSchema.getTargetNamespace())); ** 아, 불완전한 세계 ... –
@ Steven : 오픈 소스 프로젝트가 세상을 완벽하게 마무리 할 수있는 기회처럼 들린다. ;-) –