【问题标题】:xsd.exe generate only one class filexsd.exe 只生成一个类文件
【发布时间】:2015-06-05 18:07:41
【问题描述】:

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

xsd schema.xsd /c

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

这是 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>

【问题讨论】:

  • 看看 Xsd2Code 作为替代方案。

标签: c# xml xsd


【解决方案1】:

您最好和最简单的选择是使用 WSCF blue ,它是 Visual Studio 的插件 只需选择您的一组 XSD 文件/WSDL 并生成类,然后您就可以在多个/单个文件之间进行选择,然后就可以了

【讨论】:

    【解决方案2】:

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

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

    我发现生成了一堆你不需要的Attributes,并且把类弄乱了。

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

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

    这显然可能最适合中小型架构。

    【讨论】:

    • 31 节课...如果超过 31 节课?)
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-10-28
      • 2012-01-09
      • 2011-05-18
      • 2017-05-26
      • 1970-01-01
      • 2022-01-20
      • 2011-10-27
      • 2013-11-28
      • 1970-01-01
      相关资源
      最近更新 更多