1

XSDスキーマを使用してXML形式を検証する方法について質問があります。

XSDスキーマを使用してXML形式を検証するためのプログラムはすでに正常に実行されています。ただし、xx.xsdを現在のプロジェクトのメインの場所に配置する必要があります。とにかく、xsdスキーマをアセンブリに埋め込んで、実行可能アセンブリの同じ場所にxxx.xsdを常に配置する必要がないようにする方法はありますか。プロジェクトのリソースに埋め込もうとしましたが、このresgen xxx.xsdのようなVSコマンドプロンプトを使用すると、XSDファイルを再生成できないようです。このコマンドでは拡張機能がサポートされていないことを示しています。

この問題を解決する他の方法はありますか?

任意の提案をいただければ幸いです。

4

2 に答える 2

3

1つのXSDのみ(外部参照なし)を扱っている場合、@Romilの答えが必要です。ただし、コンポーネント化されたXSD(xsd:include / import / redefineを介してリンクされたXSDのセット)を使用するように移動した場合、ソリューションは機能しません。SOに関するこの投稿は、それを正しく解決する方法を示しています。独自のリゾルバーを構築して使用する必要があります。これにより、埋め込みリソースからこれらの参照をフィードできるようになります。また、非常に重要なこととして、ベースURI(通常は独自のスキームを使用して作成されたURL)を提供する必要があります。最初のリーダーを作成します。

于 2012-05-23T11:09:18.423 に答える
2

Step 1: Add the XSD to your class library project just as you would normally

Step 2: Right click à properties on the XSD file, and under Build Action, choose “Embedded Resource”</p>

Step 3: Modify the code as shown here from

XmlSchemaSet schemaSet = new XmlSchemaSet() ;
schemaSet.Add("", XmlReader.Create(xmlSchema));

to

TextReader schemaStream =
    new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(xmlSchema));
XmlSchemaSet schemaSet = new XmlSchemaSet() ;
schemaSet.Add("",XmlReader.Create(schemaStream));
于 2012-05-23T09:29:20.233 に答える