System.IO.Stream
关于传递(从方法)和反序列化到对象(另一种方法),我有 2 个具体问题。
我从 a 得到的 XML 响应WebRequest
(请注意没有根标签)
<?xml version="1.0" encoding="UTF-8"?>
<response id="-2d953936:14174bb0cf3:-5213">
<date>2013-10-01 12:01:55.532999</date>
<status>
<current>open</current>
<next>after</next>
<change_at>16:00:00</change_at>
</status>
<message>Market is open</message>
<unixtime>1380643315</unixtime>
</response>
方法 1 - ResponseMethod - 当前返回字符串
private static string GetResponse(HttpWebRequest request)
{
var v_Response = request.GetResponse();
var v_DataStream = v_Response.GetResponseStream();
var v_Reader = new System.IO.StreamReader(v_DataStream);
var x_XMLResponse = v_Reader.ReadToEnd();
//Close all Stream logic
v_Reader.Close(); v_DataStream.Close(); v_Response.Close();
return x_XMLResponse;
}
方法 2 - 将 XML 转换为对象
// I would use XDocument and Lin2XML to get my typed object - for example MarketStatus
问题是:
- 我目前正在从方法 1 传递字符串。这对我从 XML 反序列化到对象没有帮助。我是否应该将返回值作为传递
StreamReader
,然后将其用作方法 2 的输入来获取我的类型化对象。这是标准方法还是有更好的方法? - 我的最终目标是第二种方法的返回值应该是一个对象。
附加说明:
- 之所以将此功能分为 2 种方法,是因为我希望将 Web 响应方法和脱轨分离用于测试目的。
- 我没有 XSD,但创建了一个
MarketStatus
类
任何代码片段/建议都会非常感激