外部APIを使用してxmlを受信し、これをオブジェクトにシリアル化していますが、デバッグと監査のためにシリアル化に使用された元のxmlを保持できる方法が必要です。
これが私がシリアル化する方法のサンプルです:
XmlReader reader = this.Execute(url);
return Read<Property>(reader, "property");
Execute()ルーチンの抽出:
StringBuilder sb = new StringBuilder();
Stream s = response.GetResponseStream();
XmlReader reader = XmlReader.Create(s);
return reader;
Read()は、ネイティブxmlシリアル化をまとめるだけです。
private T Read<T>(XmlReader reader, string rootElement)
{
XmlRootAttribute root = new XmlRootAttribute();
root.ElementName = rootElement;
root.IsNullable = true;
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T), root);
object result = xmlSerializer.Deserialize(reader);
return (T)result;
}
リーダーを使用すると表示されるのを確認しましたが、再度使用することはできません(読み取りストリームのみを転送しますか?)。あまり変更しようとせずに、リーダーの組み込みのシリアル化の恩恵を受けながら、リーダーのコンテンツをxmlとして抽出するにはどうすればよいですか?
いいのは、outパラメータを使用してReadを調整することです。
private T Read<T>(XmlReader reader, string rootElement, out string sourceXml);