使用抽象复杂类型为模式生成类

时间:2008-11-20 16:00:44

标签: c# .net xml xsd schema

我正在使用一些定义抽象复杂类型的模式,例如

<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。

它似乎不是无效的架构。还有其他人遇到过这个问题吗?

由于

尼克

3 个答案:

答案 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工具。