2011-06-15 2 views
1

일련의 상당히 복잡한 xsd 스키마 파일이 있으며 그 중 C# 클래스를 만들고 싶습니다. Visual Studio 8에서 xsd.exe를 사용하고 클래스가 제대로 생성되었습니다. 그러나 상속을 우회하고 싶습니다. 즉, 상위 클래스에서 상속해야하는 클래스가 없음을 의미합니다.상속받지 않고 xsd 스키마에서 클래스를 생성합니다.

웹 서비스 메서드의 매개 변수로 이러한 클래스를 사용하여 웹 서비스를 만들기 때문에이 속성이 필요합니다. 웹 서비스의 wsdl은 이러한 하위 클래스에 대한 태그를 생성합니다. 웹 서비스 클라이언트를 만들 때 SAP에서 확장 태그를 허용하지 않는다는 것을 이해합니다. 따라서 나는 이것을 해결하기위한 작업이 필요하다.

도움을 주시면 대단히 감사하겠습니다.

+0

나는 당신이 무엇을하려고하는지 잘 이해하지 못합니다. 내가 이것을 갖도록 하렴. 1) XSD에서 C# 클래스를 생성하고 싶다. 2) 그런 다음 C# 클래스를 사용하여 웹 서비스 계약을 생성합니다. 3) 그런 다음 일부 SAP 구성 요소를 사용하여 장기 구매 계약에서 프록시를 생성하십시오. XSD로 프로세스를 시작하는 이유는 무엇입니까? 계약 우선? –

+0

my web service는 입력 매개 변수를 기반으로 xml 파일을 반환합니다. 내 xml 유효성을 검사하는 xsd 스키마 파일이 이미 있습니다. 내 계획은 클래스를 사용하여 동일한 계층 적 트리 구조를 만들고이 클래스를 웹 서비스 메서드의 인수로 전달하는 것입니다. – artsince

+0

OK 그렇지만 클라이언트가 XSD 표준의 일부 영역을 지원하지 않는다는 것을 알고 있기 때문에 웹 서비스 계약을 통해 해당 영역을 구현하지 않는 클래스 모델을 사용해야합니다. 예를 들어, 정말로 클래스 계층 구조를 노출해야합니까? –

답변

1

XML 스키마는 xs:extension 요소를 통해 상속을 허용하며 기본 complexType을 수정할 수 있습니다. 이 XML 스키마를 C# (또는 Java)에 매핑 할 때 이것을 클래스 상속에 매핑하는 것이 좋습니다.

xs:extension이 발생했을 때 상속 계층 구조에 매핑하는 대신, 생성 된 클래스에 확장 속성을 복사하려는 것입니다. 즉, 모든 수퍼 클래스 메서드를 하위 클래스로 가져 오는 것입니다. -수업. 이 옵션이있는 도구를 찾을 수 있을지 의심 스럽습니다. 매우 모호한 요구 사항입니다.

저는 개인적으로 XML 스키마를 원하는 구조로 변환 한 다음 스키마 - 투 - C# 도구를 사용하여이 문제를 해결할 것입니다. 이 변환에 적합한 기술은 XSLT입니다. 그러나 Linq-to-XML 또는 다른 XML 조작 API를 사용하여 자신 만의 도구를 작성할 수 있습니다.

관련 문제