2009-07-16 4 views
0

情報を第三者にもXML形式で送信する必要があります。非常に一般的な作業です。オブジェクトグラフを外部XML形式に変換するにはどうすればいいですか

私はXSDファイルのセットを持っており、XSD.exeを使用して、一連のタイプを作成しました。私はサードパーティのタイプに自分のドメイン内の型の値をマップXMLを生成するには:

public ExternalBar Map(InternalFoo foo) { 
    var bar = new ExternalBar; 

    bar.GivenName = foo.FirstName; 
    bar.FamilyName = foo.LastName; 

    return bar; 

} 

を私は、おそらくそれらを解放する前にXSDに対してそれらをチェックし、ファイルを生成するためにXmlSerializerを使用します。

この方法は非常にマニュアルですが、フレームワークや外部ツールを使用してデータをマップしてファイルを作成するより良い方法があるのだろうかと思います。

+0

マニュアル?ドラッグアンドドロップだけで生成したいのですか? – Grzenio

+0

@Grzenio、ドラッグアンドドロップではできません。フレームワークの中に私が知らないツールがあるかどうか疑問に思っています。 System.Xml.Linq名前空間。 –

答えて

0

LINQ to XMLはこれに非常に適しています。

XElement results = new XElement("ExternalFoos", 
    from f in internalFoos 
    select new XElement("ExternalFoo", new XAttribute[] { 
     new XAttribute("GivenName", f.FirstName), 
     new XAttribute("FamilyName", f.LastName) })); 
0

まず、既存のドメインのオブジェクトプロパティが、反復プロパティの割り当てを除いて、あまり操作することなくサードパーティタイプにマップされていると仮定しています。

ドメインツリーの標準的なXMLシリアル化(XSDを使用してクラスのアウトバウンドスキーマを生成する)を使用し、結果を一連のXSLTスタイルシートで後処理することをお勧めします。その後、後処理の後、結果のXML文書を第三者のスキーマに対して検証します。

これはおそらくオブジェクトドメイン間のマッピングの複雑さに依存するため、これより複雑になるでしょうが、これは過去に正常に使用した方法です。

GUIツールに関しては、Stylus Studioがスキーマとスキーマのマッピング(スクリーンショットhere)に非常に適していると聞いています。