使用XSD2Code生成类时创建对象列表无法识别复杂类型求助
XSD2Code生成带列表的复杂类型异常解决方案
该问题根因是XSD2Code处理嵌套匿名复杂类型搭配maxOccurs="unbounded"属性时,无法自动推导列表对应的元素类型,因此生成失败。可按以下方案解决:
- 方案1(兼容性最高):将嵌套的匿名复杂类型提取为全局命名复杂类型
修改后的XSD示例如下:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <!-- 全局命名复杂类型定义 --> <xs:complexType name="HenriqueType"> <xs:sequence> <xs:element type="xs:string" name="henrique1" minOccurs="0"></xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="TestType"> <xs:sequence> <xs:element name="nome" minOccurs="0" type="xs:string" ></xs:element> <xs:element name="nome2" minOccurs="0" type="xs:string" ></xs:element> <xs:element name="henrique" type="HenriqueType"></xs:element> </xs:sequence> </xs:complexType> <!-- 根节点定义 --> <xs:element name="INVOICE01"> <xs:complexType> <xs:sequence> <xs:element name="Test" minOccurs="0" maxOccurs="unbounded" type="TestType"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
- 方案2:调整XSD2Code生成配置
- 打开生成设置面板,确认「集合类型」选项配置为
System.Collections.Generic.List<T>,不要使用数组或者其他自定义集合类型 - 开启「自动生成嵌套类型」开关,避免工具跳过匿名类型解析
- 打开生成设置面板,确认「集合类型」选项配置为
- 方案3:版本适配
如果使用的是XSD2Code v3.x及更早版本,可升级到最新社区版,旧版本对匿名类型的列表支持存在已知bug。
内容的提问来源于stack exchange,提问作者GeoKing88
相关产品推荐
相关产品推荐

