将SQL Server中的XML存储在对象中,并进行解析

时间:2015-09-22 13:40:06

标签: c# xml sql-server-2012

我在数据类型XML的SQL Server表中有一列我需要读入我的c#应用程序并存储到对象中。列中数据的格式是

<call>
    <attempted>
        <enterdata/>
    </attempted>
    <completed>
        <enterdata/>
        <updatedate/>
    </completed>
</call>

这个想法是,用户呼叫客户,之后必须填写报告。在指示他们是否到达客户(已完成)或未到达(已尝试)之后,应用程序将相应地解析XML并确定它必须在系统中进行哪些更新。

但是,我不知道在我的Call类中使用哪种数据类型来存储此信息,然后再解析它以查看需要进行哪些更新。我尝试使用XElement,但收到错误说&#34;无法隐式转换类型&#39;对象&#39;到&#39; System.Xml.Linq.XElement&#39;。当我施放它时,我得到了类似的错误,但是对“弦乐器”说了些什么。相反,我相信。我希望得到一些关于如何处理这个问题的建议,从存储XML数据的数据类型到如何解析它。

1 个答案:

答案 0 :(得分:0)

这是一个解决方案:

&#34;设置&#34;是保存在DB中的xml。

     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)
         {

         }
      }
   }
}