2012-08-08 4 views
1

저는 orbitz (글로벌 호텔 배포 시스템) xsd 스키마가 있고이 xsd 파일에서 C# .Net 클래스를 생성하려고합니다.XSD.EXE는 파일에 상호 참조가있는 경우 여러 요소 생성시 오류가 발생합니다

Xsd.Exe 또는 XSD2Code 또는 다른 것을 사용할 때 생성 된 클래스는 가져온 파일의 복잡한 형식을 내부로 복사하므로 여러 파일이 같은 클래스를 갖습니다.

혼란 스럽습니다. 어떻게해야합니까?

아래 링크에서 xsd 스키마 파일을 다운로드 할 수 있습니다. "호텔"폴더에서 xsd 파일의 C# 클래스 작업이 필요합니다.

xsd 파일을 생성 한 후 이러한 .cs 파일을 프로젝트에 추가하고 오류를 확인하십시오.

감사

XSD FILES => http://rapidshare.com/files/1062702005/orbitz-pws-schemas-1.42.zip

+0

당신이 xsd.exe를 실행할 때 사용 했는가 옵션? – EkoostikMartin

+0

도움말 파일을 확인하고 문제로 설정할 적절한 옵션을 알지 못했습니다. xsd.exe PWS/hotel/common.xsd PWS/hotel/hotel_shopping.xsd/c/o : Orbitz 나는 또한/edb 옵션을 시도했지만 아무 것도 변경되지 않았습니다. – AltugCan

답변

1

감사합니다. Petru, 다른 채널을 통해 답변을 찾았습니다.

xsd.exe에서 파일이 같은 폴더에 있어야하기 때문에 파일을 같은 폴더에 넣고 가져 오기 파일 위치를 동일한 폴더로 변경했습니다.

다음 명령은 정확한 C# 라이브러리를 생성합니다.

xsd.exe/C/F/L : CS/스페이스 : 스키마 common.xsd hotel_common.xsd hotel_shopping.xsd hotel_raterules_RQ.xsd hotel_raterules_RS.xsd hotel_itinerary_RQ.xsd hotel_itinerary_RS.xsd hotel_booking_RQ.xsd hotel_booking_RS. XSD hotel_cancel_RQ.xsd hotel_cancel_RS.xsd hotel_precancel_RQ.xsd hotel_precancel_RS.xsd hotel_deals_RQ.xsd . \ hotel_deals_RS.xsd

+0

당신은 "행운"입니다. 나는 같은 폴더에서 xsd.exe가 발생하고 XmlSchemaSet (.NET 4.0에서도)이 실패하는 XSD를 사용했습니다. 반면에, 모든 xsd 제거 : include 결코 실패하지 ... +1 이것을 공유! –

2

귀하의 시나리오는 매우에 대한 것과 동일 나는 this solution을 게시 했으므로 또한. 나는 당신의 시나리오에 대해서도 그것을 시도했다, 그리고 나는 제대로 컴파일 된 코드를 얻는다.

문제는 xsd.exe의 제한 사항과 관련이 있습니다. 해결 방법은 XSD를 최소 수의 XSD 파일 (xsd : include 사용하지 않음)을 사용하여 처리하려는 모든 범위를 캡처 한 다음 생성기를 실행하는 방식으로 XSD를 리팩터링하는 것입니다.

QTAssistant showing XSR refactored Orbitz file relationships

xsd.exe 명령 줄은 다음과 같은 :

QTAssistant showing Orbitz XSD file relationships

이것은 리팩토링 XSD를 모양을 수 있습니다 : 귀하의 경우

, 이것은 당신이 무엇을 이 (전체 경로 생략) :

xsd.exe Vendor.xsd Hotel.xsd Air.xsd DynamicPackaging.xsd Car.xsd Common.xsd /language:CS /classes /out:xsd2code 

생성 된 코드가 아무런 문제없이 컴파일됩니다.