7

私はxmlファイル(XmlDocumentを使用してc#で作成したもの)を持っていますが、C#でもプログラム的にそれに対応するxsdファイルを作成する必要があります...これを行うにはどうすればよいですか?xmlファイルの作成に同じクラスを使用できますか?または、使用する必要のある他の(xsd関連の)クラスはありますか?

4

5 に答える 5

4

XMLファイルからXSDファイルを作成するだけの場合は、VisualStudioに含まれているMicrosoftのXSD.EXEを使用できます。

これを使用するには、VisualStudioのコマンドプロンプトを開きます。次に、Enterxsd file.xmlキーを押して、そのXMLファイルのスキーマを作成します。

/classesこのツールを使用して、パラメーターを渡すだけでXML入力のクラスを生成することもできます。

于 2012-05-11T20:13:40.747 に答える
4

XML スキーマ ファイルは XML ファイルですが、「手動で」実行するのが面倒なことがあります。XSD.exe や XSD2Code.exe によって生成された C# クラスを使用する代わりに、DOM API を使用して XML を記述する理由を説明できますか? または、少しプッシュするために... C#ステートメントは最終的にILアセンブリになると誰かが言っているのと似ています。代わりに IL を書いてみませんか?

もう 1 つの代替手段は、スキーマ オブジェクト モデル API によって提供されます。.NET では、System.Xml.Schema名前空間です。

MSDN でここにあるコード例を見てください。別のアプローチのアイデアが得られます。実際の XML を処理する代わりに、XSD を生成するためのプログラマーフレンドリーな API を提供します。

于 2012-05-12T03:43:03.113 に答える
2

XSDは単なる別のXMLタイプのファイルです。XMLファイルの作成に使用しているものはすべて、XSDファイルの作成にも役立ちます。ファイルに入れたいタグ/属性を知る必要があります...

于 2012-05-11T19:10:23.470 に答える
1

解決策: 最初に返信を投稿しましたが、スタック オーバーフローではなく返信を編集したので、ここに編集を示します。私が提案した元のツールは逆です。その後、いくつかの調査を行ったところ、誰かが MyGenerations などと呼ばれるツールを推奨しました。これには、インストール、ダウンロードしたテンプレート、および大量の作業が必要であり、非常に複雑でした. その後、さらに調査を行ったところ、CodePage でかなり気の利いた解決策に出会いましたが、その解決策は、私がテストしたので機能するため、いくつかの変更が必要です。このコードは、次の URL で XmlToXsd と呼ばれます。

http://www.codeproject.com/Articles/133570/XmlToXsd-A-Better-Schema-Generator

プログラム セクションには 2 つのバグがあります。まず、XSD を実行可能ファイルのルートに保存します。exe は 1 つの CS ファイルにあるメソッドを呼び出すだけです。その CS ファイルをプロジェクトに含め、指定された行で呼び出すだけです。パスを XML と同じフォルダーに変更するだけです。さらに、作成者はジャンク URL のターゲット名前空間を使用します。DevExpress は、存在しない URL に対して苦情をスローします。少し努力して、ターゲット URL を null に置き換えました。付属の CS ファイルでは、いくつかの変更を加える必要がありました。私よりも理解のある他の人は、彼/彼女の心の範囲で修正できます。私は自分がしたことを他の人に伝えることで他の人を助けるだけなので、静的なバックはありません.

変更点 1: 「target = XNamespace.Get(targetNamespace);」の前 ターゲット名前空間に対して null でない場合にのみロードする if ステートメントを追加します。

変更点 2: return の if ステートメントをもう 1 つ追加しました。null リターン (元のリターンのコピー) は次のように変更されます。

2.1: targetnamespace 属性項目を Nuke します。2.2: 置換呼び出しの後に、".Replace("xmlns=\"null\"", null))" の別の置換呼び出しを追加します。2.3: リターンの前に、中かっこを追加する必要があります。ターゲット = "null" を設定します。

結果のファイルは完全に有効で、プログラムで作成されたように見えます。

はい、XSD.exe を手動で使用できますが、対話にはプログラムによる方法が必要でした。

元の投稿: 必ずしもプログラム的にではなく、同じ質問がありました。XSD ユーティリティがその役割を果たします。問題は、Microsoft が xsd.exe を Visual Studio 2012 Professional と共に配布していないことです。ハード ドライブを検索したところ、Microsoft の SDK でユーティリティが見つかりました。ディスクのパスは "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\x64\xsd.exe" です。

XML ファイルがあるフォルダーに移動し、(Visual Studio ではなく) コマンド ボックスから XSD ユーティリティを実行し、XSD ファイルを作成する必要がありました。

このタスクをプログラムで行う 1 つの方法は、コードから XSD を呼び出すことですが、それは XSD を配布することを意味します。

この1つのアセンブリを見つけましたが、仕事をする可能性のあるそれを使用したことはありません. チェックアウト: http://xsd2code.codeplex.com/

于 2012-10-16T14:45:54.173 に答える
-1

これを試して:

string xmlFilePath = @"myxmlfile.xml";
string xsdOutputPath = @"myxmlfile.xsd";

DataSet ds = new DataSet();

System.IO.FileStream fsReadXml = new System.IO.FileStream(xmlFilePath, System.IO.FileMode.Open);
ds.ReadXml(fsReadXml);

ds.WriteXmlSchema(xsdOutputPath);

xDocument からの場合:

DataSet ds = new DataSet();
ds.ReadXml(YourXDocument.CreateReader());
ds.WriteXmlSchema(xsdOutputPath);
于 2015-05-22T10:44:38.823 に答える