6

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

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

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

必死になって、まずオブジェクトを 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);
4

2 に答える 2

5

標準の組み込みシリアライザーを使用していません。public 型 (匿名型は ではない) をXmlSerializer 要求し、読み取り/書き込みメンバー (匿名型は を持たない) に対してのみ機能します。属性が必要です (匿名型にはありません)。DataContractSerializer

率直に言って、ここでの最も簡単で最もサポート可能な「修正」は、目的に一致する POCO DTO を正式に宣言することです。つまり、ここでは匿名型を使用しないでください。例えば:

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

別の方法は、基本的に独自の xml シリアライザーを作成することです。それは... 面白くないように聞こえます。

于 2012-08-10T06:31:34.200 に答える
1

これはリフレクションを使用して行うことができます。コード例については、このスレッドの2番目と3番目の回答を確認してください。匿名タイプをxmlとしてシリアル化できますか?

MartinHNもこれについてブログに書いています

于 2012-08-10T07:51:08.030 に答える