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
文件
- 手动将创建的子 类(例如应用程序)移动到新文件中
- 删除不需要的
Attribute
s
- 最后,格式化并重命名 类 以便您自己(以及任何其他需要处理它的人)可以维护它们
这显然最适用于小型或中型架构。
最好和最简单的选择是使用 WSCF blue,它是 Visual studio 的一个插件
只是 select 你的一组 XSD files/WSDL 并生成 类 ,然后你可以在 multiple/single 个文件之间进行选择,然后你就可以
否。 xsd.exe
没有从一个 xsd 文件生成多个 类 的选项。
您可以尝试以编程方式执行此操作(参见 Mike Hadlow 中的示例)
我使用来自 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
文件 - 手动将创建的子 类(例如应用程序)移动到新文件中
- 删除不需要的
Attribute
s - 最后,格式化并重命名 类 以便您自己(以及任何其他需要处理它的人)可以维护它们
这显然最适用于小型或中型架构。
最好和最简单的选择是使用 WSCF blue,它是 Visual studio 的一个插件 只是 select 你的一组 XSD files/WSDL 并生成 类 ,然后你可以在 multiple/single 个文件之间进行选择,然后你就可以
否。 xsd.exe
没有从一个 xsd 文件生成多个 类 的选项。
您可以尝试以编程方式执行此操作(参见 Mike Hadlow 中的示例)