我使用Visual Studio XSD实用程序从XSD生成了一些C#类,并且它生成了用于存储元素集合的数组,而不是内置的通用Collection< T>之一。 (或相关)课程。
xsd /中没有提到的命令行参数?提到有关生成集合而不是数组的任何内容,但我知道这可以通过Visual Studio生成的Web服务代理类来完成,所以我认为它必须是可能的。
有人知道如何让XSD实用程序生成集合类而不是数组吗?
答案 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而不是数组),但它可能是一个起点。
马克