2011-07-12 10 views
3

私は公開プロパティを持つオブジェクトを持っています。C#オブジェクトをXSDに検証し、xml出力を生成します

オブジェクトは、地域と呼ばれ、それが今、私は基本的に領域オブジェクトに存在するすべてのプロパティを持っていない領域のXSDにこのオブジェクトを検証するこの

public class Region 
{ 
// public properties 
string name; 

string description; 

string timezone; 

string regionURL; 

string regioncode; 

} 

ようになります。そして、XSDにあるプロパティの場合は、XMLとして出力を生成したい。

<xs:schema> 
<xs:complexType name="region"> 
    <xs:sequence> 
     <xs:element name="name" type="xs:string"/> 
     <xs:element name="URl" type="xs:string"/> 
     <xs:element name="code" type="xs:int"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:schema> 

を参考にすることができ.NETで作り付けのものがあるよう

領域XSDに見えますか?

+0

コードやXMLなどを投稿するときは、エディタでcode blockオプションを使用します。これはコードをきれいにして、最終的な投稿にXMLを表示します –

+0

私は質問をよく理解しているとは思わない:XMLデータの検証を行う方法があるかどうかを尋ねていますか?または読み込まれたデータに基づいてクラスまたはクラスのコレクションを自動的に設定するものがあるかどうかを確認します。または、他の何か?ありがとう! :) – shelleybutterfly

+1

Erm ...あなたのオブジェクトの検証に失敗したらどうしますか?オブジェクトを書き換えますか? XSD.EXEを使ってXSDから自動的にオブジェクトを生成するのはなぜですか? –

答えて

0

あなたのクラスでIXMLSerializableを実装し、XSD経由でXMLシリアル化を生成することができます。

あなたは2つの選択肢がありCodeProjectのhere

0

にそれについての記事があります。

  1. RegionFromXsdタイプを持つように、リージョンスキーマのコードを生成します。リージョンタイプのインスタンスのデータを新しいRegionFromXsdタイプにマップします。次に、RegionFromXsdタイプをXML文書にシリアル化します。

  2. リージョンタイプのインスタンスを作成し、それをXMLにシリアル化してから、リージョンXSDスキーマに準拠したフォームにXMLを変換するXSLTを適用します。

希望します。

+0

私はここでは2番目のオプションが好きです。しかし、XMLを最初にシリアル化した後は理解できません.XSDに基づいてXMLを必要な形式に変換するXSLを適用できますか。私が最初にXMLを準備したら、XSDに基づいてそれからいくつかのノードをフィルタリングするだけです。 – BrijenVed

+0

自分でXSLトランスフォームを作成する必要があります。私が言ったように、 "自然に"連載する以外のXML文書にあなたのRegion型から移動するために実装できるワンステップソルーションはありません。 –

関連する問題