4

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

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

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

谢谢

缺口

4

3 回答 3

3

在评估了几种不同的模式到代码工具之后,我们发现唯一能够处理我们的模式(非常大且极其复杂)的是 Liquid XML ( http://www.liquid-technologies.com/ )。

于 2008-12-15T14:55:18.413 回答
2

我从来没有遇到过这个问题,但是我很快了解到xsd.exe有很多缺点。我们很久以前就开始使用CodeXS 。该产品是一种 Web 服务,但代码可作为命令行工具使用。

它有自己的缺点,但它生成的代码要好得多,而且是免费的。此外,它是可扩展的,并且为它添加​​自己的插件实际上非常容易。

也许,它不会有同样的限制?

于 2008-11-20T16:06:43.643 回答
-1

我知道这是一个老问题,但本周我需要这个问题的答案。我按照@ng5000 的建议尝试了 Liquid Studios,发现该软件非常笨拙。此外,cs 输出非常复杂,它为具有 12 个简单属性的单个实体提供了超过 800 行代码。

我强烈推荐Xml2CSharp,这是一个使用 XML 属性装饰器生成漂亮、简单的 POCO 的 Web 工具。

于 2017-09-21T14:50:04.520 回答