Sin*_*tic 17 .net c# sql-server-2005
我们在数据库中有一个类型为的列xml.我正在通过.net阅读这些信息SqlDataReader,但我不知道该把它投到什么.
msdn表(http://msdn.microsoft.com/en-us/library/cc716729.aspx)表明它是.net类型Xml,但没有System.Xml,只有System.Web.UI.WebControls.Xml这样我才不确定这是否正确.
所以我的问题是:
我怎么投的SqlDbType.Xml作为.我现在是读它SqlDataReader,并且我怎么将其转换成XmlDocument?
Ser*_*lov 27
它翻译SqlXml,你可以得到一个XmlReader与SqlXml.CreateReader来自它.您必须使用   SqlDataReader.GetSqlXml方法来获取类型而不是字符串.
例如:
        SqlDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            SqlXml xmlData =
            reader.GetSqlXml(0);
            XmlReader xmlReader = xmlData.CreateReader();
            xmlReader.MoveToContent();
            while (xmlReader.Read())
            {
                if (xmlReader.NodeType == XmlNodeType.Element)
                {
                    string elementName = xmlReader.LocalName;
                    xmlReader.Read();
                    Console.WriteLine(elementName + ": " + xmlReader.Value);
                }
            }
        }
更新:回答@Wiktor Zychla的有用评论
这种方法的性能更好,可以有很多大型XML领域打交道时更好,因为SqlReader.GetString会加载字段内容转换成字符串也先SqlReader.GetSqlXml产生直接流中的XmlReader.可以通过查看Reflector或类似工具中的System.Data来快速验证.
我记得把它扔成一个字符串.用字符串提供XmlDocument就像平常一样.
| 归档时间: | 
 | 
| 查看次数: | 30332 次 | 
| 最近记录: |