【问题标题】:Using XSD2CODE with multiple schema files将 XSD2CODE 与多个模式文件一起使用
【发布时间】:2013-05-22 23:42:00
【问题描述】:

我在 Visual Studio 2010 中使用 XSD2CODE。我知道我可以右键单击架构 (XSD) 文件并从中生成 c# 类。

我想知道的是,当一个 XML 文件有两个架构文件时,如何生成 C# 类?

更多信息:

也许我在最初的问题中没有提供足够的细节。

参考问题Why does XSD.EXE Create Two .XSD Files, and How to Use Them?,我基本上是在问XSD2CODE而不是XSD

对于 XSD,我会使用以下命令:

D:\>xsd response.xsd response_app1.xsd /classes

如何在 VS 2010 GUI 和/或命令行中使用 XSD2CODE 执行此操作?

【问题讨论】:

    标签: .net xsd2code


    【解决方案1】:

    编辑:
    要回答更新后的问题,Xsd2Code 似乎并非旨在一次处理多个 .xsd 文件。

    我是从以下地方收集的:

    1. 命令行语法
      Xsd2Code.exe <XSD File> [Namespace] [Output file name] [Options]
    2. 快速浏览源代码(从http://xsd2code.codeplex.com/SourceControl/list/changesets 下载构建88331 并查看Trunk\Xsd2Code.Console\EntryPoint.cs

    Pascal Cabanel 似乎在 Xsd2Code 的 CodePlex 网站上非常活跃。考虑联系他以获得明确的答案: http://www.codeplex.com/site/users/view/pcabanel

    • 我会离开我的前一个。在下面回答

    为了自动创建支持的 xsd2Code 类文件,您可以在解决方案资源管理器中单击 .xsd 文件,然后在“属性”窗口中,将 Xsd2CodeCustomTool 写入/粘贴到“自定义工具”属性中。

    为了在另一个.xsd 文件中“查看”数据类型,您可以使用include 语句。

    这是一个包含数据定义和Employees.xsd include-ing Person.xsd 并使用Person 数据类型的Person.xsd 示例。

    • 请注意,由于Employees.xsd 已经包含Person.xsd,您只需为Employees.xsd 生成Xsd2Code。

    Person.xsd

    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="CommonNamespace"
               xmlns="CommonNamespace"
        >   
        <xs:complexType name="Person">
            <xs:sequence>
                <xs:element name="Name" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:schema>
    

    Employees.xsd

    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               targetNamespace="CommonNamespace"
               xmlns="CommonNamespace"
        >
        <xs:include schemaLocation="Person.xsd"/>
    
        <xs:element name="Employees">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="Employee" type="Person" maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    
    </xs:schema>
    

    【讨论】:

    • 我不明白这如何帮助我处理多个架构文件
    • 我认为自动生成多个文件是问题所在。我更新了我的答案。
    • AVIDeveloper - 感谢您的更新。不幸的是,这需要更改模式文件,而 XSD 不需要。我已经更新了问题。
    • 对不起,但这不是解决方案。也许这是那个简单案例的解决方案,但如果还有另一个 xsd。可以说“managers.xsd”,它还包括“person.xsd”。那么如果你生成“managers.cs”,你将再次拥有相同的声明,如果相同的命名空间,Vs 将返回错误。好吧,也许手动剥离这些并不是一件大事,但我有非常大的 xds,它们包括多达 4 个子级。它变得非常复杂。必须有一个解决方案。我知道它适用于导入,但不适用于包含!怎么样?
    • @batmaci:在我更新的回复中,我写道“Xsd2Code 似乎并非旨在一次处理多个 .xsd 文件”。抱歉,我不能提供更多。
    猜你喜欢
    • 2022-09-27
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多