6

Visual Studio 2010で使用しています。スキーマ( )ファイルを右クリックして、そこからc#クラスを生成XSD2CODEできることを知っています。XSD

私が知りたいのは、1つのXMLファイルに対して2つのスキーマファイルがある場合にC#クラスを生成するにはどうすればよいですか?

詳しくは:

おそらく、元の質問で十分な詳細を提供していませんでした。

質問を参照するXSD.EXEが2つの.XSDファイルを作成する理由とその使用方法 XSD2CODE、私は基本的にの代わりに同じ質問をしていXSDます。

XSDでは、次のコマンドを使用します。

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

XSD2CODEVS 2010 GUIおよび/またはコマンドラインの両方でこれを行うにはどうすればよいですか?

4

1 に答える 1

3

編集:
更新された質問に答えるために、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ステートメントを使用できます。

これは、データ定義を含むPerson.xsdとEmployees.xsd include-ing Person.xsdを使用し、Personデータ型を使用する例です。

  • 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>
于 2012-02-22T01:01:30.950 に答える