Visual Studio XSD工具:生成集合而不是数组

时间:2009-03-08 15:46:34

标签: xml visual-studio xsd code-generation

我使用Visual Studio XSD实用程序从XSD生成了一些C#类,并且它生成了用于存储元素集合的数组,而不是内置的通用Collection< T>之一。 (或相关)课程。

xsd /中没有提到的命令行参数?提到有关生成集合而不是数组的任何内容,但我知道这可以通过Visual Studio生成的Web服务代理类来完成,所以我认为它必须是可能的。

有人知道如何让XSD实用程序生成集合类而不是数组吗?

4 个答案:

答案 0 :(得分:8)

在搜索答案时找到这篇文章。我正在使用此工具:http://xsd2code.codeplex.com/

答案 1 :(得分:1)

问题在于XSD与XML语言无关。它不能使用Java或C#中的任何其他不支持的东西。数组是最低的共同点。

Java开发人员使用像XStream这样的OXM库来将对象封送到XML并返回。它允许您在从对象到XML时指定自定义类型。听起来你必须在.NET工具箱中找到类似的东西。

这不是你问题的答案,但这也是我认为XSD无法完成这项工作的原因。就像Java开发人员接触XStream一样,你必须寻找其他地方。

答案 2 :(得分:1)

您已经看到了使用服务引用集合的功能,而不是Web引用。请改为查看svcutil.exe实用程序。看起来像svcutil / t:code file.xsd可能会为你做这件事。

答案 3 :(得分:1)

不幸的是,我目前还没有发现任何可靠的工具。

有一个XSDObjectGen(或类似的东西),但该工具似乎已从网络空间的面孔消失: - (

我看到一种方法使用XSDTidy在XSD工具的输出中将所有int []的替换应用到List中 - 似乎有效,但看起来有点笨拙。

这是CodeProject article on XSDTidy

我一直试图找到的东西是一位绅士的博客文章,他基本上在Reflector中剖析了XSD的内部工作原理,然后利用他获得的知识来构建自己的工具,使用了很多.NET核心类。如果我没记错的话,那是this blog post here ("writing your own xsd.exe")。 Mike并没有完全按照您的要求进行操作(创建List而不是数组),但它可能是一个起点。

马克