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

Posted

技术标签:

【中文标题】Visual Studio XSD 工具:生成集合而不是数组【英文标题】:Visual Studio XSD Tool: Generate Collections Rather Than Arrays 【发布时间】:2010-10-12 01:05:28 【问题描述】:

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

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

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

【问题讨论】:

你可以在这里找到我的答案-> ***.com/a/24557248/1125467 【参考方案1】:

在寻找答案时发现了这篇文章。我正在使用这个工具:http://xsd2code.codeplex.com/

【讨论】:

【参考方案2】:

问题在于 XSD 与 XML 语言无关。它不能使用其他不支持的 Java 或 C# 中的任何内容。数组是最小的公分母。

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

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

【讨论】:

【参考方案3】:

您已经看到了将集合与服务引用一起使用的能力,而不是与 Web 引用一起使用。请查看 svcutil.exe 实用程序。看起来 svcutil /t:code file.xsd 可能会为您执行此操作。

【讨论】:

【参考方案4】:

不幸的是,目前我不知道有任何工具可以可靠地执行此操作。

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

我看到一种方法使用 XSDTidy 将所有 int[] 替换为 List 而不是 XSD 工具的输出 - 似乎有效,但似乎有点笨拙。

这是CodeProject article on XSDTidy。

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

马克

【讨论】:

以上是关于Visual Studio XSD 工具:生成集合而不是数组的主要内容,如果未能解决你的问题,请参考以下文章

自定义 Visual Studio XSD 生成规则

Visual Studio 2010:IDE 中类的 XML XSD 架构

Visual Studio 2012 命令窗口不支持“xsd”命令吗?

Visual Studio 总是为 App.config 选择错误的 xsd

我可以添加一个代码生成工具,我将其写入我的Visual Studio副本作为扩展吗?

无法找到visual studio 2017生成工具