【发布时间】:2015-09-25 13:08:32
【问题描述】:
我需要反序列化一个“应该”从 SQL 查询返回的 XML 对象。
我在 JSON 中工作,但不能使用 JSON,所以我转向 XML。 JsonConvert 功能将我的结果放在一行中。但我不确定如何处理 SQL 给我的内容。
当写入服务器时,Table 正在获取 Xdocument 类型,写入 xml 数据类型单元格。
if (do_sql_read)
{
List<string> usernames = new List<string>();
List<int> ids = new List<int>();
string sql_load;
Player player_after_load = new Player();
//multiple
string select_string = @"SELECT * FROM [Table]";
using (SqlConnection sql_connection_a = new SqlConnection( GetConnectionString() ) )
{
sql_connection_a.Open();
using (SqlCommand command = new SqlCommand(select_string, sql_connection_a))
{
SqlDataReader reader = command.ExecuteReader(CommandBehavior.Default);
// XML VERSION
while (reader.Read())
{
int iii = reader.GetInt32(0); // unique id int
string name = reader.GetString(1); // Name string
sql_load = reader.GetString(2);
usernames.Add(name);
ids.Add(iii);
XmlSerializer XML_serializer = new XmlSerializer (typeof(Player));
// <<<<< THIS PART ??? >>>
player_after_load = (Player)XML_serializer.Deserialize (sql_load);
Console.WriteLine("SQLPlayer: " + iii + " " + player_after_load.name + " " + player_after_load.health + " " + player_after_load.mana);
}
/* JSON VERSION WORKS
while (reader.Read())
{
int iii = reader.GetInt32(0); // unique id int
string name = reader.GetString(1); // Name string
sql_load = reader.GetString(2);
usernames.Add(name);
ids.Add(iii);
player_after_load = JsonConvert.DeserializeObject<Player>(sql_load);
Console.WriteLine("SQLPlayer: " + iii + " " + player_after_load.name + " " + player_after_load.health + " " + player_after_load.mana);
}
*/
}
}
} // end do_sql_string
【问题讨论】:
-
看看我对另一个问题的回答是否有帮助:stackoverflow.com/questions/27003701/parse-this-xml-to-object/…
-
您似乎正在尝试使用 XmlSerializer 反序列化 JSON 字符串。我认为这行不通(因为您的 JsonConvert 调用确实有效,我假设 sql_load - 字段索引 2 - 包含 JSON 数据,而不是 XML)。
-
我已将所有内容都转换为 XML
-
反序列化时有没有报错?
-
行: player_after_load = (Player)XML_serializer.Deserialize (sql_load);是唯一的错误。 “最佳重载方法匹配...具有无效参数。我知道这是因为我没有正确反序列化。我真的不知道返回到 sql_load 的内容是什么。它是 json 字符串,现在是它的 XMLdocument。
标签: c# sql xml deserialization