xsd.exe 只生成一个 class 文件

xsd.exe generate only one class file

我使用来自 Microsoft SDK 的 NetFX 4.5.1 工具命令:

xsd schema.xsd /c

它只生成一个class,它具有所有结构(schema.cs)。但我需要一组 classes,其结构在 schema.xsd 中描述。例如:Application.cs、Applicant.cs 等等,就像我在 Eclipse 中生成 JAXB classes 之后一样。

这是 schema.xsd 代码的一部分:

    <?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2011 rel. 2 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="3.0.0">
    <!-- Application -->
    <xs:element name="Application">
        <xs:annotation>
            <xs:documentation>Заявка</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="DecisionResponse" minOccurs="0"/>
                <xs:element ref="CreditRequest" minOccurs="0"/>
                <xs:element ref="Applicant"/>
                <xs:element ref="Routing"/>
            </xs:sequence>
            <xs:attribute ref="applicationDate" use="optional"/>
            <xs:attribute ref="timestamp" use="optional"/>
            <xs:attribute name="applicationId" type="xs:int" use="optional">
                <xs:annotation>
                    <xs:documentation>ID заявки</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="applicationDecision" type="xs:string" use="optional">
                <xs:annotation>
                    <xs:documentation>Итоговое решение по заявке</xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <!-- DecisionResponse -->
    <xs:element name="DecisionResponse">
        <xs:annotation>
            <xs:documentation>Решения по заявке</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Product" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

我认为 xsd.exe 没有那个选项。

根据我使用 xsd.exe 的经验,它是一个很好的工具,可以让你继续前进,但不应该像 T4 模板一样使用(例如 .tt 文件用于 EF),而只能 运行一次。

我发现生成了一堆您不需要的 Attribute,并且弄乱了 类。

所以恕我直言,最好简单地:

  • 筛选生成的 schema.cs 文件
  • 手动将创建的子 类(例如应用程序)移动到新文件中
  • 删除不需要的 Attributes
  • 最后,格式化并重命名 类 以便您自己(以及任何其他需要处理它的人)可以维护它们

这显然最适用于小型或中型架构。

最好和最简单的选择是使用 WSCF blue,它是 Visual studio 的一个插件 只是 select 你的一组 XSD files/WSDL 并生成 类 ,然后你可以在 multiple/single 个文件之间进行选择,然后你就可以

xsd.exe 没有从一个 xsd 文件生成多个 类 的选项。

您可以尝试以编程方式执行此操作(参见 Mike Hadlow 中的示例)