2011-04-18 5 views
0

私は任意の.NETオブジェクトを持っています(つまり、それは[DataContract]が適用されていることを保証できます)、すべての文字列プロパティに対して特別な処理を行うツリー(XMLなど)に変換します。これは典型的なシリアル化タスクのように見えますが、.NETシリアライザのどれもプロパティコンテンツの処理を制御できません(DataContractSerializer/XmlSerializerを使用しようとしましたが、XmlObjectSerializerWriteContextはデザイナーのおかげです)。ツリーを逆シリアル化する必要はありません。視覚的表現のためだけです。オブジェクトグラフをツリーに変換する

リフレクションを使用した手動のシリアライゼーション以外のオプションはありますか(コレクションを処理するにはあまりにも多くの作業に似ています、グラフのサイクルなど)?

更新:リフレクションに依存するカスタム再帰関数で終了しました。

答えて

1

なぜXML出力で文字列処理を実行しないのですか? XPATHを使用して文字列であるすべての要素を取得し、操作を実行します。

また、(あなたが内部的にXmlDictionaryWriterをラップし、その上でメソッドを呼び出すことができます)あなたの文字列処理を実行するためにXmlDictionaryWriterを実現することができます。

http://msdn.microsoft.com/en-us/library/system.xml.xmldictionarywriter.aspx

とそれにライターにDataContractSerializerを使用します。

http://msdn.microsoft.com/en-us/library/ms195072.aspx

+0

XML出力のプロパティの種類はどのように知っていますか? NetDataContractSerializerを使用すると、プリミティブの型情報が格納されますか? – UserControl

+0

[DataContract]を使用する場合は、いいえ:([Serializable]を使用している場合は、yes) – Jeff

+0

他の提案を参照してください。 – Jeff

関連する問題