回答:
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
するには、ツールメニューでVS2013の開発者コマンドプロンプトを実行します。
xsd.exe
以下で見つけることができます:C:\Program Files (x86)\Microsoft SDKs\Windows
xsd.exe
に発見されました: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools
VS 2012以降の.NET 4.5プロジェクトで作業している場合は、XMLファイルをクラスとして特別に貼り付けることができます。
EDIT > Paste Special > Paste XML As Classes
xsd
が、出力はほぼ同じです。
public (\w+) (\w+)\r\n +\{\r\n +get\r\n +\{\r\n +return this.*;\r\n +\}\r\n +set\r\n +\{\r\n +this.*;\r\n +\}\r\n +\}\r\n
=> public $1 $2 { get; set; }
および `private \ w + \ w + Field; \ r \ n \ r \ n`
最初、私はペーストスペシャルが聖杯だと思っていました!しかし、それを試してみたところ、インディアナジョーンズの映画のように髪が白くなりました。
しかし、今は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; }
これはかなり古い投稿だと思います。おそらく先に進んでいるはずです。
しかし、私はあなたと同じ問題を抱えていたので、私は自分のプログラムを書くことにしました。
私にとって「xml-> xsd-> classes」ルートの問題は、完全に保守不能なコードの塊を生成するだけで、結局それを混乱させてしまうことでした。
それは決してエレガントではありませんが、それは私のために仕事をしました。
あなたはそれをここで得ることができます:それが好きなら提案してください。
svcutil(svcutilの質問を検討する必要があります)
xsd.exeとsvcutilはどちらもXMLスキーマファイル(.xsd)を操作します。XMLは、これら2つのツールのいずれかで使用されるスキーマファイルに準拠している必要があります。
これには、さまざまなサードパーティツールも存在することに注意してください。
Darinの提案に従って、xsdを使用できます。
さらに、test.xsd-fileを編集して、より妥当なスキーマを作成することをお勧めします。
type="xs:string"
変更することができるtype="xs:int"
整数値のため
minOccurs="0"
に変更することができるminOccurs="1"
フィールドが必要な場合
maxOccurs="unbounded"
に変更することができますmaxOccurs="1"
唯一の項目が許可されます
データをさらに検証したい場合は、より高度なxsd-sを作成できますが、これにより、生成されたc#で少なくとも妥当なデータ型が得られます。
XMLをC#クラスに変換するには:
注:満杯になると、このアプリは置き換えられる可能性がありますが、可能性としては、同じことを行う別のツールがあるでしょう。