解决方案:
我最初发布了回复,但 Stack Overflow 我编辑了我的回复,所以这里是编辑。我建议的原始工具是另一种方式。然后我做了一些研究,有人推荐了一个名为 MyGenerations 或类似的工具。这需要安装、下载模板和大量工作,太复杂了。然后我做了一些更多的研究,并在 CodePage 上遇到了一个相当漂亮的解决方案,但是该解决方案有效,因为我对其进行了测试,需要进行一些修改。该代码称为 XmlToXsd,其 URL 为:
http://www.codeproject.com/Articles/133570/XmlToXsd-A-Better-Schema-Generator.
程序部分有两个错误。首先,它将 XSD 保存到可执行文件的根目录。不用担心,exe 只是调用位于一个 CS 文件中的方法。只需在项目中包含该 CS 文件并使用给定的行调用,只需将路径更改为与 XML 相同的文件夹即可。此外,作者使用垃圾 URL 的目标命名空间。 DevExpress 对不存在的 URL 提出投诉。通过一些努力,我将目标 URL 替换为 null。在随附的 CS 文件中,我必须进行一些更改。其他人的理解比我能修改到他/她的内心程度。我只是通过告诉他们我做了什么来帮助别人,所以没有静态的回复。
变更一:在“target = XNamespace.Get(targetNamespace);”之前为目标命名空间添加一个 if 语句,仅在不为 null 时才加载。
更改 2:我为返回添加了另一个 if 语句。 null返回,原返回的一个副本修改如下:
2.1:核对目标命名空间属性项。
2.2:在replace调用之后,再添加一个“.Replace("xmlns=\"null\"", null))”的replace调用。
2.3:返回前,需要加大括号,设置target="null"。
生成的文件现在看起来完全有效并以编程方式创建。
是的,可以手动使用 XSD.exe,但我需要一种程序化的对话方式。
原帖:
我有同样的问题,不一定是程序化的。 XSD 实用程序确实可以完成这项工作。问题是 Microsoft 没有随 Visual Studio 2012 Professional 分发 xsd.exe。我搜索了我的硬盘驱动器并找到了带有 Microsoft SDK 的实用程序,我的磁盘上的路径为“C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\x64\xsd.exe”。
我必须转到 XML 文件所在的文件夹并从命令框(不是在 Visual Studio 中)执行 XSD 实用程序,最后得到 XSD 文件。
以编程方式执行此任务的一种方法是从代码中调用 XSD,但这意味着分发 XSD。
我找到了这个组件,但从未使用它来完成这项工作。签出:http://xsd2code.codeplex.com/