web-dev-qa-db-ja.com

XMLからC#クラスを生成する

XMLファイルからC#クラスを生成できますか?

224
user496949

はい、 xsd.exe を使用して

D:\temp>xsd test.xml
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Writing file 'D:\temp\test.xsd'.

D:\temp>xsd test.xsd /classes
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Writing file 'D:\temp\test.cs'.

注意事項

答え 開発者コマンドプロンプトでディレクトリを変更する方法 d:\ tempが役に立つかもしれません。

多次元配列用のクラスを生成する場合、XSD.exeジェネレータにバグがありますが、 回避策があります

321
Darin Dimitrov

VS 2012(またはそれ以降)で.NET 4.5プロジェクトに取り組んでいる場合は、特殊貼り付け XMLファイルをクラスとして使用できます。

  1. XMLファイルの内容をクリップボードにコピーする
  2. エディタで、クラスを貼り付ける場所を選択します
  3. メニューからEDIT > Paste Special > Paste XML As Classesを選択します
391
miszczu

最初、私はPaste Specialが聖杯だと思いました!しかし、それから私はそれを試してみて、私の髪はちょうどインディアナジョーンズの映画のように白くなった。

しかし今、私は http://xmltocsharp.azurewebsites.net/ を使用し、今ではこれまでと同じくらい若いです。

これが生成したものの一部です。

namespace Xml2CSharp
{
    [XmlRoot(ElementName="entry")]
    public class Entry {
        [XmlElement(ElementName="hybrisEntryID")]
        public string HybrisEntryID { get; set; }
        [XmlElement(ElementName="mapicsLineSequenceNumber")]
        public string MapicsLineSequenceNumber { get; set; }
38
D. Kermott

これはかなり古い投稿であり、あなたはおそらく先に進んだと思います。

しかし、私はあなたと同じ問題を抱えていたので、私は私自身のプログラムを書くことにしました。

私にとっての "xml - > xsd - > classes"ルートの問題は、それが完全に維持できないコードの塊を生成しただけで、それを芝生にしてしまうことでした。

それは決してエレガントではありませんが、それは私のために仕事をしました。

あなたはここでそれを得ることができます:あなたがそれを好めば提案をしてください。

SimpleXmlToCode

22
Talon

Svcutil( svcutil question )を考慮する必要があります

Xsd.exeとsvcutilはどちらもXMLスキーマファイル(.xsd)を操作します。 XMLは、これら2つのツールのいずれかによって使用されるスキーマファイルに準拠している必要があります。

これにはさまざまなサードパーティ製ツールも存在することに注意してください。

6
ng5000

Darinが提案しているようにxsdを使うことができます。

それに加えて、より合理的なスキーマを作成するためにtest.xsdファイルを編集することをお勧めします。

整数値の場合はtype="xs:string"type="xs:int"に変更できます
minOccurs="0"は、フィールドが必須の場合はminOccurs="1"に変更できます
maxOccurs="unbounded"maxOccurs="1"に変更できます。ここでは1つの項目のみが許可されます

データをさらに検証する必要がある場合は、より高度なxsd-sを作成できますが、少なくとも生成されたc#で妥当なデータ型が得られます。

3
Albin Sunnanbo

以下の構文を使用してXSDファイルからスキーマクラスを作成します。

C:\xsd C:\Test\test-Schema.xsd /classes /language:cs /out:C:\Test\
0
Kiran.Bakwad

XMLをC#クラスに変換するには

  • Microsoft Visual Studio Marketplaceに移動します。 - https://marketplace.visualstudio.com
  • 検索バーにテキストを入力: - クラスコードツールにxml
  • アプリをダウンロード、インストール、および使用する

注:時間がたっぷりと、このアプリは置き換えられるかもしれませんが、チャンスは、同じことをする別のツールがあるでしょう。

0
J Wood