私はちょうどC#の作業を開始し、.NETフレームワークが持つ偉大なXmlSerializerについて学びました。逆シリアル化中にXmlパラメータを使用してオブジェクトを構築する
私はそうのようなクラスを注釈を付けました:
Tはジェネリック型であるXmlSerializer s = new XmlSerializer(T);
s.Deserialize(response.GetResponseStream());
:私はすでにとの基本的な直列化復元を行うことができます
[XmlRoot("time_entry")]
public class TimeEntry
{
[XmlElement("id")]
public int Id { get; set; }
[XmlElement("project"), XmlAttribute("id")]
public int ProjectId { get; set; }
[....]
}
。私の目標は今、さらに一歩これを取ることであり、このXMLを与えられた:
<time_entries type="array" limit="25" offset="0" total_count="254">
<time_entry>
<id>299</id>
<project id="152" name="Test"/>
<issue id="1314"/>
<user id="2" name="Anonymous"/>
<activity id="9" name="Development"/>
<hours>10.0</hours>
<comments/>
<spent_on>2015-11-09</spent_on>
<created_on>2015-11-10T17:31:57Z</created_on>
<updated_on>2015-11-10T17:31:57Z</updated_on>
</time_entry>
</time_entries>
自動的に既存の辞書に、代わりにTimeEntry
クラスにProjectId
属性を設定する指定したidを持つプロジェクトを見つけ、私は思います<project>
XML要素のid
属性を使用して見つかったProject
のインスタンスに置き換えます。
これはどういうことですか?私はgetterですぐに何かを行うことを考えていたかもしれませんが、フィールドのタイプが変わるとすぐに、要素がスキップされるようです。
PS:私はシリアル化プロセスに本当に関心がないので、 ...