私はこれに一日中苦労してきました。たくさんの研究をしましたが、全部まとめられないようです。
次のようなサーバーからのXML応答があります。
<?xml version="1.0" ?>
<inboxRecords>
<inboxRecord>
<field1 />
<field2 />
<field3 />
</inboxRecord>
<inboxRecord>
<field1 />
<field2 />
<field3 />
</inboxRecord>
</inboxRecords>
応答を表すために次のコードを作成しました。意図は、以下を使用して応答を逆シリアル化することです。
[XmlRoot("inboxRecords")]
public sealed class QueueQueryResult
{
public InboxRecord[] InboxRecords;
public QueueQueryResult()
{
InboxRecords = null;
}
public sealed class InboxRecord
{
public string field1 { get; set; }
public string field2 { get; set; }
public string field3 { get; set; }
}
}
上記のクラスは、私がオンラインで見つけた数多くの例の1つに基づいています。問題は、上記のクラスをシリアル化すると(それが正しいことを確認するために)、次のようになります。
<?xml version="1.0" encoding="utf-16"?>
<inboxRecords>
<InboxRecords>
<InboxRecord>
<field1>some value</field1>
</InboxRecord>
<InboxRecord>
<field1>some value</field1>
</InboxRecord>
</InboxRecords>
</inboxRecords>
それで、最初の問題は、どうすれば余分なInboxRecords要素を取り除くことができますか?私はルートにそれを言わせたいだけです(小さな「i」で)。次に、簡単にテストするために、最初のフィールドに値を入力するだけです。他のフィールドが空の要素として表示されなかったのはなぜですか?そのために別のデコレータが必要ですか?
ありがとう!ありがとう!