2012-08-10 7 views
6

動的に作成されたオブジェクトをxml文字列にシリアル化する方法はありますか?匿名型オブジェクトをXMLにシリアル化する方法

var foobar = new { foo = "bar" }; 
string xml = ConvertToXMLString(foobar); 
//xml should be something like : 
//<foo>bar</foo> 

私はXmlSerializerをとDataContractSerializerを見てみることができたが、DataContractSerializerをシリアル化する必要がプロパティに属性を必要とするのXmlSerializerオブジェクト型を必要とします。

私は必死でオブジェクトをJSONに変換し、JSONからオブジェクトをXMLに変換しました。

var foobar = new { foo = "bar" }; 
JavaScriptSerializer js = new JavaScriptSerializer(); 
jsonString = js.Serialize(values); 
//Json.NET at http://json.codeplex.com/ 
XmlDocument doc = (XmlDocument)JsonConvert.DeserializeXmlNode(jsonString); 
+0

「'dynamic'」オブジェクトが異なっている:'新しい{..} '結果静的に型付けされた式で記述します。 –

+1

それを指摘してくれてありがとう。私は専門用語と混同しました。 – xar

+0

JSONに変換するためのハックの呼び出しがうまくいってから、XML =) – madannes

答えて

5

標準の組み込みシリアライザを使用していません。 XmlSerializerパブリックタイプ(匿名タイプではありません)を要求し、読み書き可能なメンバー(匿名タイプにはがない)に対してのみ機能します。 DataContractSerializerは属性(匿名タイプにはがない)を要求します。

ここで最も単純で最もサポートされている「修正」は、あなたの後ろのものと一致するPOCO DTOを正式に宣言することです。ここでは匿名型は使用しないでください。たとえば:

public class MyDto { 
    public string foo {get;set;} 
} 
... 
var foobar = new MyDto { foo = "bar" }; 

代替は、独自のXMLシリアライザを書く本質的だろう。それは...楽しいようには聞こえません。

関連する問題