2008-11-20 65 views
4

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

<xs:complexType name="AnotherType"> 
    <xs:sequence> 
    <xs:element name="Data" type="MyComplexType" maxOccurs="unbounded"/> 
    </xs:sequence> 
</xs:complexType> 

当我运行:

<xs:complexType name="MyComplexType" abstract="true"> 

这种类型,然后通过在架构中另一个复杂类型引用 “XSD.EXE/d/L:CS MySchema.xsd” 我得到这个错误:

Error: There was an error processing MySchema.xsd'. - Error generating code for DataSet ''. - Unable to convert input xml file content to a DataSet. DataSet cannot instantiate an abstract ComplexType for the node Data. - DataSet cannot instantiate an abstract ComplexType for the node Data.

它似乎不是无效的模式。有其他人遇到这个问题吗?

感谢

尼克

回答

3

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

2

我从来没有遇到这个问题,但我很快就发现,XSD.EXE有很多不足之处。很久以前我们开始使用CodeXS。该产品是一项Web服务,但代码可用作命令行工具。

它有它自己的疣,但它生成的代码更好,它是免费的。另外,它是可扩展的,并且为它添加​​自己的插件实际上非常简单。

可能它不会有同样的限制吗?

+0

虽然有效,但我无法将我们公司的xsd上传到第三方网络服务(无论多么简单或任何保证或适当位置)。至少它似乎确认它是一个xsd.exe问题:( – ng5000 2008-11-20 16:25:37

0

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

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