将SQL Server中的XML存储到对象中,并解析
问题描述:
我在需要读入我的c#应用程序并存储到对象中的数据类型XML的SQL Server表中有一列。列中数据的格式为将SQL Server中的XML存储到对象中,并解析
<call>
<attempted>
<enterdata/>
</attempted>
<completed>
<enterdata/>
<updatedate/>
</completed>
</call>
这个想法是,用户呼叫客户,之后必须填写报告。在指出他们是否到达客户(已完成)或未到达(尝试)之后,应用程序将相应地解析XML并确定它必须在系统中进行哪些更新。
但是,我不知道要在Call类中使用哪种数据类型来存储此信息,然后稍后解析它以查看需要进行哪些更新。我尝试使用XElement
,但得到一个错误,说“不能隐式地将类型'对象'转换为'System.Xml.Linq.XElement'。我在施放它时遇到了类似的错误,但是对'String'说,我相信。我希望能得到关于如何处理一些这方面的建议,从什么样的数据类型来存储XML数据,如何分析它
答
这里是一个解决方案:
“设置”保存在XML在DB。
IDictionary<string, string> setting = new Dictionary<string, string>();
using (DbDataReader reader = command.ExecuteReader())
{
if (reader.Read())
{
object settingValue = reader["setting"];
if (settingValue != null)
{
try
{
// Test if the content can be parsed as XElement before contract deserialize
XElement xNode = XElement.Parse(settingValue.ToString());
if (xNode != null)
{
setting = (IDictionary<string, string>)XmlUtil.DataContractDeserialize(settingValue.ToString(), setting.GetType());
}
}
catch (XmlException)
{
}
}
}
}
使用调试器的快速监视功能来检查对象的类型从服务器返回。我敢打赌,它只是你需要解析为一个的XElement字符串。 – Will
你ç使用'SqlCommand.ExecuteXmlReader'并创建一个'XDocument',这是一种简单的解析XML的方法 –