나는 약 160 개의 XSD를 받았고 C# 클래스를 생성 할 수 있기를 바란다. XSD를 변경할 수 없으며, 그들이 나에게 준 형식을 따르는 더 많은 스키마를 추가 할 수있다.요소 및 유형을 공유하는 많은 XSD - 클래스를 생성하는 방법은 무엇입니까?
각 스키마가 많은 일치하는 유형과 동일한 이름의 루트 요소를 선언는 예 :
문헌 1 :
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Root-XML" type="Root-XMLType1"/>
<xs:complexType name="Root-XMLType1">
<xs:sequence>
<xs:element name="Header" type="HeaderStruct"/>
<xs:element name="Delivery" type="DeliveryType1Struct"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DeliveryType1Struct">
<xs:complexContent>
<xs:restriction base="DeliveryType1Abstract">
<xs:all>
<xs:element name="GMTOffset" type="GMTOffsetType"/>
<xs:element name="UserName" type="UserNameType"/>
</xs:all>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
..... 9000 more lines of types .....
</xs:schema>
문서 2 :
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Root-XML" type="Root-XMLType2"/>
<xs:complexType name="Root-XMLType2">
<xs:sequence>
<xs:element name="Header" type="HeaderStruct"/>
<xs:element name="Delivery" type="DeliveryType2Struct"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="DeliveryType2Struct">
<xs:complexContent>
<xs:restriction base="DeliveryType2Abstract">
<xs:all>
<xs:element name="GMTOffset" type="GMTOffsetType"/>
<xs:element name="UserName" type="UserNameType"/>
</xs:all>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
..... 9000 more lines of types .....
</xs:schema>
이러한 스키마의 대부분 있습니다 여기 저기에 몇 가지 추가 된 요소를 제외하고는 동일합니다.
XSD.exe를 사용하려고했지만 '이 유형이 이미 선언되었습니다'라는 경고와 많은 누락 된 요소가있었습니다. 그것이 매개 변수 파일에서 전달 된 마지막 XSD를 선택한 것처럼 보였습니다.
이름 충돌이 발생하고 네임 스페이스를 사용하지 않는 경우 여기에서 어떤 종류의 대답을 기대합니까? 논리적으로, 다른 이름으로 같은 이름을 사용하는 것은 본질적인 문제를 제시합니다. 먼저 수정하십시오. – kjhughes
나는 엄격한 지침에 따라 스키마를 변경하지 않습니다. 다른 네임 스페이스를 사용했거나 스키마를 만든 경우 스키마를 병합했습니다. – nelsontruran
XmlDocument 클래스 또는 XDocument 클래스를 사용하여 클래스를 구문 분석 할 수 있습니다. 스키마는 유효한 XML을 생성하고 있는지 확인하는 데 사용되며 유효한 XML을 읽는 데 필요하지 않습니다. – jdweng