0

API 応答を取得して POCO オブジェクトに変換する API ラッパーを作成しています。現在、次の一連のアクションに従うテストがあります。

  • XML 要素の名前と値を持つオブジェクトを作成します。
  • このオブジェクトを XML 形式にシリアル化します。
  • コンバーターを使用して、XML ツリーを実際のオブジェクトに変換します。
  • 新しいオブジェクト内の値が期待どおりかどうかをアサートします。

表示オブジェクトを表す次のヘルパー クラスがあります。

class TestShow {
 public string id { get; set; }
 public string IMDB_ID { get; set; }
 public string Language { get; set; }
}

シリアライザー:

var serializer = new XmlSerializer(show.GetType());
string xml;

using (var writer = new StringWriter()) {
   serializer.Serialize(writer, show);
   xml = writer.ToString();
}

ただし、これを XML にシリアル化すると、次の結果が得られます。

<?xml version="1.0" encoding="utf-16"?>
<TestShow xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <id>76290</id>
  <IMDB_ID>tt0285331</IMDB_ID>
  <Language>en</Language>
</TestShow>

望ましい結果は次のとおりです。

<Data>
 <Series>
  <id>76290</id>
  <IMDB_ID>tt0285331</IMDB_ID>
  <Language>en</Language>
 </Series>
</Data>

これは、次の 2 つの問題を示しています。

  1. の名前をTestShowに変更する必要がありますSeries。これを行う簡単な方法はありますか、それともクラス名を変更するだけですか?
  2. というアッパーコレクションがありDataます。これをどのように追加しますか?
4

1 に答える 1

3

Xml 属性を POCO に追加します。

class TestShow 
{
    public string id { get; set; }
    public string IMDB_ID { get; set; }
    public string Language { get; set; }
}

[XmlRoot("Data")]
class Data 
{
    [XmlElement("Series")]
    public TestShow TestShow { get; set; }
}
于 2013-09-14T12:57:02.370 に答える