2009-07-01 1 views
4

나는 xsd.exe 방식이 아닌 linq toxsd 방식으로 수업을 생성하고 싶습니다.프로그래밍 방식으로 XSD에서 .NET 클래스를 생성하는 방법은 무엇입니까? (like xsd.exe do)

감사합니다. - 란.

+1

왜 xsd.exe를 사용하지 않습니까? – Groo

+0

아마 원하지 않는 무엇입니까, 당신에게 그것은 무엇입니까? – leppie

+1

@leppie : 요구 사항을 분명히합니다. 예를 들어 외부 프로그램을 호출하지 않는 제한이 있습니까? Microsoft 프로그램을 사용하지 않으시겠습니까? –

답변

10

System.Xml.Serialization.XmlCodeExporter 클래스를 살펴보십시오.

는 UPDATE

"Xsd.exe는 는 XML 스키마 정의 (XSD) 문서에서 클래스를 생성에 XmlCodeExporter를 사용합니다."(경우에 존 손더스가 더 읽기 귀찮게 didnt는)

+0

"이 API는 .NET Framework 인프라를 지원하며 코드에서 직접 사용할 수 없습니다." –

+1

1 1.1 이후로 사용하고 있는데 문제가 있습니까? – leppie

+0

"사용할 수 없습니다"는 "사용할 수 없음"을 의미하지는 않습니다.) –

1

어떻게 처리해야 할 부분을 모르십니까?

XmlSchemaSetXmlSchema 클래스의 인스턴스를 하나 이상로드 할 수 있습니다. 이렇게하면 스키마의 모든 부분과 참조 할 수있는 다른 스키마를 프로그래밍 방식으로 검사 할 수 있습니다. 이 정보를 사용하여 나중에 컴파일해야하는 텍스트 또는 CodeDOM을 사용하여 코드를 생성 할 수 있습니다. Dynamic Source Code Generation and Compilation을 참조하십시오. 당신은 비주얼 스튜디오의 맥락에서 코드를 생성하는 경우


, 나는 당신이 T4 템플릿을 통해이를 건의 할 것입니다. Generating Artifacts By Using Text Templates을 참조하십시오.

+0

XML 스키마의 복잡성, 직접 파싱 및 클래스 생성 등은 악몽 일 것입니다. – Ran

+0

나는 당신이 직접 그것을 분석 할 것을 제안하지 않았다. XmlSchema.Load를 사용하여 단일 스키마를로드 한 다음 결과를 XmlSchemaSet에 추가합니다. 해당 집합에 필요한 모든 스키마를 추가 한 다음이를 "컴파일"하여 유효성을 검사하고 상호 참조를 수정할 수 있습니다. 마지막으로, 구조를 걸어서 코드를 생성 할 수 있습니다. –

+0

미안 해요, 구조를 파싱하지 않는다는 의미였습니다. SOM 또는 XML 스키마 사양에 얼마나 익숙한 지 잘 모르겠습니다. XML Schema로부터 코드를 생성하는 것은 크고 복잡한 작업입니다 (XML 스키마 스펙의 하위 세트 만 지원해야한다고 생각할 때도 있습니다. 실제로 코드로 직접 변환 할 수 있습니다). 이것이 제가 그 문제에 대한 코드를 사용하십시오. – Ran

3

Process Class을 사용하여 코드에서 xsd.exe를 호출 할 수 있습니다. 나는 그것을 한 번 그리고 그것의 빠르고 똑바로했다. 많이 지루할 필요가 없습니다 :).

5

Xsd2Code 거기 밖으로 최고의 무료/오픈 소스 도구가 될 것 같습니다보십시오. VS2010

좋은 통합 그것은 나를 위해 큰 일입니다.

관련 문제