我正在使用一些定义抽象复杂类型的模式,例如
<xs:complexType name="MyComplexType" abstract="true">
然后,模式中的另一个复杂类型引用此类型:
<xs:complexType name="AnotherType">
<xs:sequence>
<xs:element name="Data" type="MyComplexType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
当我运行“xsd.exe / d / l:CS MySchema.xsd”时出现此错误:
错误:处理MySchema.xsd时出错。 - 生成DataSet代码时出错“。 - 无法将输入xml文件内容转换为DataSet。 DataSet无法为节点Data实例化抽象ComplexType。 - DataSet无法为节点Data实例化抽象ComplexType。
它似乎不是无效的架构。还有其他人遇到过这个问题吗?
由于
尼克
答案 0 :(得分:3)
在评估了几种不同的模式到代码工具之后,我们发现能够处理我们的模式(非常大且极其复杂)的唯一工具是Liquid XML(http://www.liquid-technologies.com/)。
答案 1 :(得分:2)
我从来没有遇到过这个问题,但我很快就知道xsd.exe有很多缺点。我们很久以前就开始使用CodeXS了。该产品是一种Web服务,但该代码可用作命令行工具。
它有自己的瑕疵,但它生成的代码要好得多,而且是免费的。另外,它是可扩展的,为它添加自己的插件实际上非常简单。
可能会有同样的限制吗?
答案 2 :(得分:-1)
我知道这是一个老问题,但本周我需要回答这个问题。我按照@ ng5000的建议尝试了Liquid Studios,发现软件非常笨重。此外,cs输出非常复杂,它为我提供了超过800行代码,用于具有12个简单属性的单个实体。
我强烈推荐Xml2CSharp,这是一个使用XML属性修饰器生成漂亮,简单的POCO的Web工具。